我最近将应用程序从后端转换为模块。我正在为长时间运行的请求使用后端,主要是获取外部URL的请求(使用请求库)。由于更改了我的应用程序,使得所有内容都在单个默认模块上运行,因此我收到DeadlineExceededError。即。
DeadlineExceededError('The API call urlfetch.Fetch() took too long to respond and was cancelled.
我在appengine documentation中读到有一个:
HTTP请求的60秒截止日期,任务的10分钟截止日期
我正在运行的请求作为任务运行(使用deferred.defer(...))。然而,任务从例如15:51:54.489开始,并在15:51:59.600结束 - 在抛出错误之前总计5秒。
在app.yml中启用自动缩放,如下所示:
automatic_scaling:
min_idle_instances: 1
max_idle_instances: 1
max_pending_latency: 1s
我不清楚为什么会抛出这个截止日期错误。能不能让我知道如何避免抛出这个错误?
答案 0 :(得分:3)
如异常所述,错误来自urlfetch.Fetch
,即使您使用urllib
,requests
或其他库,也会在App Engine上路由每个出站HTTP请求。 deadline
的默认urlfetch
为5
秒。所以问题是您对外部URL的HTTP请求超时。这似乎与从后端切换到常规实例无关。可能是巧合。
This page概述了DeadlineExceededError
背后的各种错误。