代码之家  ›  专栏  ›  技术社区  ›  kovshenin

应用程序引擎:urlfetch()上的CPU超出配额

  •  2
  • kovshenin  · 技术社区  · 14 年前

    嘿。我对App Engine还很陌生。我创建了一个基于web的Twitter应用程序,它现在正在app Engine上运行,而且我的CPU经常超出配额限制。我做了一些分析,发现每个请求都包含两个urlfetch查询,每个查询最多需要2个CPU秒。这段时间可能要花在等待上,剩下的代码都在200毫秒内完成(包括使用数据存储)。配额是每天6.5小时,我的每个请求大约需要4个CPU秒。今天早上我只用了几个小时就用完了免费配额。

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

    感谢您的帮助, 谢谢!

    2 回复  |  直到 14 年前
        1
  •  3
  •   Martin v. Löwis    14 年前

    我会发现,在urlfetch中等待远程响应所花费的时间被计入您的CPU配额中,这让我感到困惑,因为没有CPU时间被花费。

    但假设这真的是个问题, asynchronous requests 可能是你的解决办法。至少,您可以重叠两个urlfetch请求以同时进行。也许你可以找到其他你可以做的事情,直到回复。

        2
  •  2
  •   stefanw    14 年前

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

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