在抛出DeadlineExceededError

时间:2015-09-17 16:11:51

标签: python google-app-engine

我最近将应用程序从后端转换为模块。我正在为长时间运行的请求使用后端,主要是获取外部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

我不清楚为什么会抛出这个截止日期错误。能不能让我知道如何避免抛出这个错误?

1 个答案:

答案 0 :(得分:3)

如异常所述,错误来自urlfetch.Fetch,即使您使用urllibrequests或其他库,也会在App Engine上路由每个出站HTTP请求。 deadline的默认urlfetch5秒。所以问题是您对外部URL的HTTP请求超时。这似乎与从后端切换到常规实例无关。可能是巧合。

This page概述了DeadlineExceededError背后的各种错误。