即使在后端运行TaskQueue,截止日期也会超出错误

时间:2013-12-27 18:03:10

标签: python google-app-engine

我遇到了截止日期超出错误的问题。基本上我正在使用 Mechanize 在URL中进行一些网页抓取。所以当试图执行

br.open(url)

我有这个错误

  

HTTPException:等待HTTP响应时超过截止时间   网址:my-url

我已经阅读documentation所说的使用后端(我正在使用动态后端,B4_1G类有5个实例),但仍然会在60秒内发生此错误。根据文档,当使用 TaskQueue 后端时,超时应延长至10分钟。

以下是我在TaskQueue上将操作分配给runnnig的方法,它的目标是我的后端的第一个实例。

taskqueue.add(url='/crons/myworker', target='1.myworker')

以下是 backends.yaml

backends:
- name: myworker
  class: B4_1G
  instances: 5
  options: dynamic

有关可能发生的事情的任何想法?谢谢。

1 个答案:

答案 0 :(得分:5)

没有涉及通过HTTP获取数据的请求在应用引擎上花费的时间超过60秒。

10分钟限制是指任务本身 - 它们可以运行长达10分钟。

所以GAE可能不是最好的选择,因为你只能使用它提供的urlfetch等版本,如果你的请求平均需要花费60秒以上的话。

  

您可以为请求设置截止日期,最长时间   服务将等待回应。默认情况下,获取的截止日期   是5秒。 HTTP请求的最长截止时间为60秒   任务队列和cron作业请求需要10分钟。

https://developers.google.com/appengine/docs/python/urlfetch/

因此,一项任务最长可持续10分钟,网址获取时间最长为60秒。从前端或后端执行urlfetch操作的位置无关紧要,限制是相同的。