根据https://developers.google.com/appengine/docs/python/config/cron cron cobs可以运行10分钟。但是,当我尝试通过登录为管理员的Cron作业来测试它时,它会带有DECHLINEEXCEEDEDEDERROR。最好的我可以说这发生了大约30秒,这是请求的非克朗限制。我需要做一些特别的事情来使用cron规则与正常限制进行测试?
这是我在做的:
- 去cron工作的URL
- 这个调用我的处理程序,该处理程序称我的py脚本中的一个函数
- 此函数对Google的云SQL进行调用,并通过结果行循环,在每行上调用一个使用eBay的API获取一些数据 的函数
- eBay API调用中的数据存储在所有调用后,将所有呼叫都写回数据库中。
- 循环完成后,将数据写入数据库并返回处理程序
- 处理程序打印完成的消息
在循环eBay API调用中,它总是存在问题。这是必须在循环中制作的500个API调用。
知道为什么我不为此获得整整10分钟的时间?
编辑:如果您认为它会有所帮助,我可以发布实际代码,但是我假设这是一个我做错的过程,而不是代码中的错误,因为如果我将查询限制为大约60个API调用。
GAE执行CRON作业的方式使其可以运行10分钟。这可能是通过检查用户代理,IP地址或其他一些方法来完成的(我只是在猜测)。仅仅因为您设置了cron作业以在您的应用程序中达到URL并不意味着浏览器的标准HTTP请求就可以运行10分钟。
测试工作是否有效的方法是在没有限制的本地开发服务器上进行。或等到您的Cron作业执行并检查日志是否有任何错误。
希望这会有所帮助!
这是您可以澄清异常的方法,并确定它是否是一个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/deadlineexceededederrors,这是一个urlfetch问题。
如果是urlfetch的时间,请尝试设置更长的持续时间(EX 60秒):
result = urlfetch.fetch(url, deadline=60)