2010-11-23 20 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作业和任务队列定期更新存储的数据。