尽管采取了几个步骤来避免它,但GAE + BQ中的DeadlineExceededError

时间:2014-05-14 23:52:44

标签: google-app-engine google-bigquery

我有一个BigQuery查询,可能需要一分钟几个BigQuery查询,每个查询大约需要10-30秒才能运行,我一直试图从Google App Engine执行。在调用堆栈中的一个或多个位置,正在使用DeadlineExceededError终止HTTP请求。有时DeadlineExceededError(不确定哪种类型)按原样提出,有时会被翻译为HTTPException

在不同的SO帖子中发现了以下潜在客户,我采取了各种措施来避免超时:

  • 在添加到GAE TaskQueue的任务中运行查询,将task_age_limit设置为10米。 (1
  • 使用值599 * 1000~10分钟将timeoutMs标记传递给getQueryResults(在Google的Python API中调用作业对象)。 (2
  • 在调用getQueryResults之前,每次调用urlfetch.set_default_fetch_deadline(60),以确保该设置对于正在进行调用的线程是本地的。 (345

可以找到典型堆栈跟踪的相关部分的要点here。在典型的任务执行中,会出现许多故障,最后可能会成功。

This answer似乎是说在任何情况下(包括任务),GAE上的urlfetch来电都不会超过60秒。我怀疑查询超出了我的硬限制,所以我可能错过了一个重要的步骤。有没有人遇到类似的情况并弄清楚发生了什么?

0 个答案:

没有答案