我在Deadline Exceeded error上遇到了一些问题。基本上,我正在使用Mechanize在URL中进行一些webscrapping 。所以当尝试执行
br.open(url)
我有这个错误
HTTPException:等待URL:my-url的HTTP响应时超过了截止日期
我已经阅读了说明使用后端的文档(我正在使用具有5个实例的动态后端B4_1G类),但是仍然会在60秒内发生此错误。并且根据文档,使用TaskQueue和Backends时,超时应延长到10分钟。
这是我如何将操作分配给TaskQueue上的runnnig,并将其目标放在后端的第一个实例上。
taskqueue.add(url='/crons/myworker', target='1.myworker')
这是backends.yaml。
backends: - name: myworker class: B4_1G instances: 5 options: dynamic
对可能发生的事情有任何想法吗?谢谢。
在应用引擎上,任何涉及通过HTTP获取数据的请求都不会超过60秒。
10分钟的限制是指任务本身-它们最多可以运行10分钟。
因此,GAE可能不是最佳选择,因为如果您的请求平均需要花费60秒以上的时间,那么您只能使用它提供的urlfetch等版本。
您可以设置请求的截止日期,即服务等待响应的最长时间。默认情况下,提取的截止日期为5秒。HTTP请求的最大期限为60秒,任务队列和cron作业请求的最大期限为10分钟。
https://developers.google.com/appengine/docs/python/urlfetch/
因此,任务最多可以运行10分钟,而url提取最多可以运行60秒。从前端或后端在哪里执行urlfetch操作都没有关系,限制是相同的。