2010-06-29 91 views
1

我正在提取给定链接名称的所有实例,但我想调用它们的所有值(rating2)来执行计算,我调试了所有的时间,并且所有的时间都在查询和获取行中,有一个100个项目的表,它需要2秒!!!!!从100个物品表中取出几件物品的速度会如此缓慢,我该如何加速呢?我正在命令控制台中运行这个命令并调用appengine_console.py并以这种方式运行我的脚本,这可能会导致任何延迟?简单提取非常慢

class LinkRating2(db.Model): 
    user = db.StringProperty() 
    link = db.StringProperty() 
    rating2 = db.FloatProperty() 

def sim_distance(link1,link2,tabl): 
    # Get the list of shared_items 
    si={} 
    query = tabl.all() 
    query2 = tabl.all() 

    a = query.filter('link = ', link1) 
    b = query2.filter('link = ', link2) 
    adic ={} 
    bdic= {} 

    aa = a.fetch(10000) 
    bb = b.fetch(10000) 

UPDATE/EDIT 嗨,大家好,我把到SIM距离函数的调用我的主载网页,我打电话sim_distance数千次在其他功能很让我惊讶它仅15ms的取执行!这是我不明白的,当我在命令窗口的appengine_console.py中运行时,为什么每次调用需要2秒?我花了一个小时在cmd窗口中运行,但是在从资源管理器窗口运行时立即运行。

+0

我猜你正在用'tabl = LinkRating2'调用'sim_distance()'? – 2010-06-29 19:23:05

+3

我不明白为什么执行这两个查询需要特别长的时间,如果你只有100个实体。您可以发布[AppStats](http://code.google.com/appengine/docs/python/tools/appstats.html)截图以帮助我们准确了解所有时间的使用情况吗? – 2010-06-29 19:25:15

+1

你确定这些查询特别需要2秒,而不是整个页面加载吗?开发服务器是单线程的,所以看起来请求的处理可能需要相当长的一段时间,尤其是如果您考虑HTML页面的呈现。 – 2010-06-29 19:31:10

回答

1

您是否尝试过使用appstats?这将根据RPC信息为您详细分析页面的哪些部分专门占用了大部分时间。

+0

我没有使用appstats,但我把一个简单的time.time()在两个可以看到我调用这个函数所花费的时间,我把它们放在查询之前和上面的代码中取回之后。我会看看appstats,看看我是否也可以发布屏幕截图。 – user291071 2010-06-29 19:43:48

+0

好的,简单的问题,我跟着appstats页面,可以得到它,如果我调用主函数将看到获取请求显示在页面上,我怎么去得到它与我的功能上面虽然!?该死的谷歌文档从来没有任何实际使用的例子!,我试图包括在主要功能,也尝试调用函数以及与wsgi,任何想法? – user291071 2010-06-29 23:42:33

+0

一旦安装了AppStats,它应该记录并呈现对服务器发出的所有请求的统计信息。我期望你对remote_api的请求会显示出来。另一种获取数据的方式:也许你可以创建一个临时的请求处理程序来调用你的函数。然后浏览到导致服务器调用该请求处理程序的页面。那个请求的AppStats数据应该反映你的函数消耗的资源。 – 2010-06-30 00:13:19