如何在Google App Engine上设置BigQuery的截止日期

hum*_*ing 5 google-app-engine google-bigquery

我有一个Google App Engine程序,可以调用BigQuery来获取数据.

查询通常需要3 - 4.5秒,并且很好但有时需要超过5秒并抛出此错误:

DeadlineExceededError:API调用urlfetch.Fetch()花了太长时间才响应并被取消.

本文介绍截止日期和不同类型的截止日期错误.

有没有办法将BigQuery作业的截止日期设置为超过5秒?无法在BigQuery API文档中找到它.

Mic*_*hri 6

BigQuery查询速度很快,但通常需要比默认的App Engine urlfetch超时更长的时间.BigQuery API是异步的,因此您需要将每个短于5秒的API调用分解为步骤.

对于这种情况,我会使用App Engine任务队列:

  1. 调用BigQuery API来插入你的工作.这将返回JobID.

  2. 在App Engine任务队列上放置一个任务,以检查该ID的BigQuery查询作业的状态.

  3. 如果BigQuery作业状态不是"完成",则在队列上放置一个新任务以再次检查它.

  4. 如果Status为"DONE",则使用urlfetch进行调用以检索结果.