我有一个BigQuery查询,可能需要一分钟几个BigQuery查询,每个查询大约需要10-30秒才能运行,我一直试图从Google App Engine执行。在调用堆栈中的一个或多个位置,正在使用DeadlineExceededError
终止HTTP请求。有时DeadlineExceededError
(不确定哪种类型)按原样提出,有时会被翻译为HTTPException
。
在不同的SO帖子中发现了以下潜在客户,我采取了各种措施来避免超时:
task_age_limit
设置为10米。 (1)timeoutMs
标记传递给getQueryResults
(在Google的Python API中调用作业对象)。 (2)getQueryResults
之前,每次调用urlfetch.set_default_fetch_deadline(60),以确保该设置对于正在进行调用的线程是本地的。 (3,4,5)可以找到典型堆栈跟踪的相关部分的要点here。在典型的任务执行中,会出现许多故障,最后可能会成功。
This answer似乎是说在任何情况下(包括任务),GAE上的urlfetch
来电都不会超过60秒。我怀疑查询超出了我的硬限制,所以我可能错过了一个重要的步骤。有没有人遇到类似的情况并弄清楚发生了什么?