Python GET - 对 Bigquery API 的调用会引发超出期限的错误

Posted

技术标签:

【中文标题】Python GET - 对 Bigquery API 的调用会引发超出期限的错误【英文标题】:Python GAE - Call to Big Query API throws Deadline exceeded error 【发布时间】:2017-01-19 20:46:50 【问题描述】:

我一直在使用 Big Query api,但由于此错误,我 90% 的请求都失败了:

HTTPException: Deadline exceeded while waiting for HTTP response from URL: https://www.googleapis.com/bigquery/v2/projects/poorproject/queries?alt=json

我正在执行 UPDATE 操作,因此我使用的是标准 SQL 而不是旧版 SQL。我知道标准 SQL 要慢得多,因此会抛出 Deadline 错误。

我正在使用 GAE Endpoints API,并尝试增加 urlfetch 时间,但没有成功。

有解决办法吗?

谢谢:)

【问题讨论】:

我认为应用引擎中默认的 urlfetch 时间是 60 秒。这个问题已经被问过很多次了,但谷歌没有提供关于超过 urlfetch 时间的明确文档。 你好@Bravin,是的,我已经读过 60 秒的 urlfetch 时间,但真正奇怪的是,在 8-10 秒后,这个错误也会被抛出......所以我在这一点上有点迷路..但感谢您的信息。 这对我有用:urlfetch.set_default_fetch_deadline(600) 【参考方案1】:

在不了解有关您的方案的更多详细信息(例如,您尝试调用哪个特定 API)的情况下,我只能推测可能的原因。我怀疑您使用的是同步 'Jobs.Query' API 而不是异步 'Jobs.Insert' API。如果是这样,我建议使用异步 API,因为这可以帮助您避免任何较短的截止日期,因为插入作业非常快。如果您仍然遇到超时问题,可以选择在 BigQuery 问题跟踪器上提交错误并提供更多详细信息。

【讨论】:

以上是关于Python GET - 对 Bigquery API 的调用会引发超出期限的错误的主要内容,如果未能解决你的问题,请参考以下文章

使用python从bigquery处理大量数据集,将其加载回bigquery表

使用bigquery表GET api获取表的最后修改日期

使用 bigquery 表 GET api 获取表的最后修改日期

在 python 中通过 API 对 BigQuery 表进行分区

是否已更改Python BigQuery API?

从python上传到Bigquery