根据https://developers.google.com/appengine/docs/python/config/cron cron,工作可以持续10分钟。但是,当我尝试通过以管理员身份登录时转到cron作业的URL来测试它时,它会因DeadlineExceededError而超时。最好的我可以告诉这种情况发生在大约30秒内,这是请求的非cron限制。我是否需要做一些特殊的事情来测试cron规则与正常限制?
这就是我正在做的事情:
在循环ebay api调用期间始终存在问题。这类似于必须在循环中进行500次api调用。
我知道为什么我没有得到整整10分钟?
编辑:我可以发布实际代码,如果你认为它会有所帮助,但我认为这是一个我做错的过程,而不是代码中的错误,因为如果我将查询限制为大约60个api电话。
答案 0 :(得分:9)
GAE执行cron作业的方式允许它运行10分钟。这可能是通过检查用户代理,IP地址或其他方法完成的(我只是在这里猜测)。仅仅因为您设置了一个cron作业来命中应用程序中的URL并不意味着来自浏览器的标准HTTP请求将允许它运行10分钟。
测试作业是否有效的方法是在没有限制的本地开发服务器上执行此操作。或者等到你的cron作业执行并检查日志是否有任何错误。
希望这有帮助!
答案 1 :(得分:1)
以下是如何澄清异常并告知它是否是urlfetch问题。如果例外是:
* google.appengine.runtime.DeadlineExceededError: raised if the overall request times out, typically after 60 seconds, or 10 minutes for task queue requests;
* google.appengine.runtime.apiproxy_errors.DeadlineExceededError: raised if an RPC exceeded its deadline. This is typically 5 seconds, but it is settable for some APIs using the 'deadline' option;
* google.appengine.api.urlfetch_errors.DeadlineExceededError: raised if the URLFetch times out.
然后看https://developers.google.com/appengine/articles/deadlineexceedederrors,因为这是一个urlfetch问题。
如果是超时的urlfetch,请尝试设置更长的持续时间(前60秒):
result = urlfetch.fetch(url, deadline=60)