2010-06-29 172 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