使用 Python 的 BigQuery 客户端 | 超时和轮询问题

Moh*_*523 7 google-bigquery google-cloud-platform

我试图通过初始化 BQ 客户端来在 BQ 数据库上执行 SQL 语句。这已经运行了一段时间,但最近发现了一个问题。

当我的代码尝试等待数据库的结果时,它特别失败

query_job = client.query(QUERY)  # API request to start the query    
db_rslt = query_job.result()     # Wait for the query to return results
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

File "/opt/conda/default/lib/python3.7/site-packages/google/cloud/bigquery/job.py", line xxx, in result super(QueryJob, self).result(retry=retry, timeout=timeout) File "/opt/conda/default/lib/python3.7/site-packages/google/cloud/bigquery/job.py", line xxx, in result return super(_AsyncJob, self).result(timeout=timeout) File "/opt/conda/default/lib/python3.7/site-packages/google/api_core/future/polling.py", line xxx, in result self._blocking_poll(timeout=timeout, retry=retry, polling=polling) TypeError: _blocking_poll() got an unexpected keyword argument 'retry'

在结果方法中添加了超时参数但没有帮助

小智 6

这取决于您安装的 google-cloud-bigquery 库的版本,如果您使用的是 1.x 版本,请确保将 google-api-core 设置为低于 1.34.0 的版本。

这里实际发生的情况是,当您安装 google-cloud-bigquery 时,会自动安装一堆其他与 google 相关的库,google-api-core 就是其中之一。但是,正在安装更高版本,从而导致此问题。

就我而言,设置 google-api-core==1.33.2 可以解决该问题。其他解决方案是将 google-cloud-bigquery 升级到更高版本。


小智 5

7 天前,Google 发布了错误修复更新。google-api-core==1.34.0我想如果您不使用更高版本的google-cloud-bigquery. 您可以:

  1. 固定google-api-core到以前的工作版本(例如 1.33.2)
  2. 升级google-cloud-bigquery到最新版本。