2010-11-23 57 views
2

嘿。我對App Engine很陌生。我創建了一個基於Web的Twitter應用程序,該應用程序現在在App Engine上運行,並且我一直在超過配額限制的CPU上運行。我做了一些分析,發現每個請求都包含兩個urlfetch查詢,每個查詢最多需要2個CPU秒。這段時間可能會花費等待,所有其他代碼都在200 ms以內完成(包括與數據存儲一起工作)。配額是每天6.5小時,我的每個請求大約需要。 4個CPU秒。今天早上我只用了幾個小時就跑出了免費配額。App引擎:urlfetch上的CPU超額配置()

這是怎麼回事?我無法讓Twitter更快地響應我的API調用,並且我無法緩存結果,因爲每個請求都針對不同的Twitter配置文件。

任何幫助表示讚賞, 謝謝!

+1

http://code.google.com/p/googleappengine/issues/detail?id=678 – systempuntoout 2010-11-23 15:20:01

+1

http://code.google.com/appengine/docs/python/urlfetch/fetchfunction.html似乎表明這不是取回?檢查了截止日期參數 – 2010-11-23 16:07:04

+0

您確定URLFetch消耗CPU時間,而不僅僅是掛鐘時間嗎?你能發佈一個appstats屏幕的圖片嗎? – 2010-11-23 23:38:05

回答

3

我會發現它讓人困惑,因爲沒有花費CPU時間,因此在urlfetch中等待遠程響應的時間會計入您的CPU配額。

但假設這確實是問題,asynchronous requests可能是您的解決方案。至少,您可以重疊兩個urlfetch請求以同時進行。也許你會找到其他的東西,直到回覆結束。

2

您應該更改應用程序的設計。

,而不是從應用程序引擎發出請求到Twitter爲每個用戶請求:

  • 不要在用戶使用JavaScript如果可能的瀏覽器的請求。
  • 經過urlfetch後,將Twitter的響應存儲在數據存儲中,因爲在下一個請求中對數據存儲的調用速度更快。如果你可以在memcache中緩存某些東西,甚至更好。
  • 藉助cron作業和任務隊列定期更新存儲的數據。