App Engine:urlfetch上的CPU Over Quota()

时间:2010-11-23 14:05:23

标签: python google-app-engine

嘿。我是App Engine的新手。我创建了一个基于Web的Twitter应用程序,它现在在App Engine上运行,我不断地达到我的CPU超过配额限制。我做了一些分析,我发现每个请求都包含两个urlfetch查询,每个查询最多需要2个CPU秒。那个时间可能花在等待上,所有剩下的代码都在200毫秒内完成(包括使用数据存储区)。配额每天6.5小时,我的每个要求大约需要。 4秒CPU。我在今天早上用完了几个小时的免费配额。

这是怎么回事?我不能让Twitter更快地响应我的API调用,并且我无法缓存结果,因为每个请求都是针对不同的Twitter配置文件。

感谢任何帮助, 谢谢!

2 个答案:

答案 0 :(得分:3)

我觉得很困惑的是,在urlfetch中等待远程响应的时间会计入你的CPU配额,因为没有花费CPU时间。

但假设这确实是问题,asynchronous requests可能是您的解决方案。至少,您可以重叠两个urlfetch请求以同时继续。也许你会找到其他的东西,直到回复回来。

答案 1 :(得分:2)

您应该更改应用程序的设计。

而不是针对每个用户请求从App Engine向Twitter发出请求:

  • 如果可能,请在用户浏览器中使用JavaScript执行请求。
  • 在urlfetch之后,将Twitter的响应存储在数据存储区中,因为在下一个请求中对数据存储区的调用会更快。如果你可以在memcache中缓存一些东西,那就更好了。
  • 借助cron作业和任务队列定期更新存储的数据。