You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级google-cloud-bigquery至3.12.0后遇requests超时值异常问题

问题

将google-cloud-bigquery从3.11.4版本升级至3.12.0版本后,已固定以下依赖版本:

requests==2.31.0
requests-futures==1.0.1
requests_pkcs12==1.21
urllib3==1.26.18

但偶尔会触发如下错误:

File "/usr/local/lib/python3.10/site-packages/google/api_core/future/polling.py", line 282, in exception
    self._blocking_poll(timeout=timeout)
  File "/usr/local/lib/python3.10/site-packages/google/cloud/bigquery/job/query.py", line 1318, in _blocking_poll
    super(QueryJob, self)._blocking_poll(timeout=timeout, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/google/api_core/future/polling.py", line 137, in _blocking_poll
    polling(self._done_or_raise)(retry=retry)
  File "/usr/local/lib/python3.10/site-packages/google/api_core/retry.py", line 366, in retry_wrapped_func
    return retry_target(
  File "/usr/local/lib/python3.10/site-packages/google/api_core/retry.py", line 204, in retry_target
    return target()
  File "/usr/local/lib/python3.10/site-packages/google/cloud/bigquery/job/query.py", line 1460, in _done_or_raise
    self.reload(retry=retry, timeout=transport_timeout)
  File "/usr/local/lib/python3.10/site-packages/google/cloud/bigquery/job/base.py", line 781, in reload
    api_response = client._call_api(
  File "/usr/local/lib/python3.10/site-packages/google/cloud/bigquery/client.py", line 816, in _call_api
    return call()
  File "/usr/local/lib/python3.10/site-packages/google/cloud/_http/__init__.py", line 482, in api_request
    response = self._make_request(
  File "/usr/local/lib/python3.10/site-packages/google/cloud/_http/__init__.py", line 341, in _make_request
    return self._do_request(
  File "/usr/local/lib/python3.10/site-packages/google/cloud/_http/__init__.py", line 379, in _do_request
    return self.http.request(
  File "/usr/local/lib/python3.10/site-packages/google/auth/transport/requests.py", line 542, in request
    response = super(AuthorizedSession, self).request(
  File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 483, in send
    timeout = TimeoutSauce(connect=timeout, read=timeout)
  File "/usr/local/lib/python3.10/site-packages/urllib3/util/timeout.py", line 102, in __init__
    self._connect = self._validate_timeout(connect, "connect")
  File "/usr/local/lib/python3.10/site-packages/urllib3/util/timeout.py", line 147, in _validate_timeout
    raise ValueError(
ValueError: Timeout value connect was <object object at 0x7c6b5e484a80>, but it must be an int, float or None.

已知urllib3版本已在2.x以下,仍出现该错误,寻求解决方法。

解决方案
  • 显式指定请求超时参数:在调用BigQuery相关方法(如query()、reload())时,显式传入timeout参数为整数或浮点数,避免依赖默认值传递异常对象。例如:
    query_job = client.query(sql, timeout=300)  # 设置5分钟超时
    
  • 检查requests-futures兼容性:requests-futures==1.0.1版本较旧,可能与google-cloud-bigquery==3.12.0的异步请求逻辑冲突。尝试升级requests-futures到最新兼容版本,或暂时移除该依赖(若业务无需异步请求)。
  • 锁定google-api-core版本:错误可能源于google-api-core的超时处理逻辑变化,将其锁定到与google-cloud-bigquery==3.12.0兼容的稳定版本(例如2.11.0,需确认版本匹配),避免自动升级引发兼容性问题。
  • 排查自定义代码超时参数:检查所有涉及BigQuery请求的代码,确保传递的timeout参数为合法的数值或None,而非未初始化的对象。
  • 回退BigQuery版本:若上述方法无效,暂时降级google-cloud-bigquery至3.11.4版本,等待官方修复该兼容性问题。

内容的提问来源于stack exchange,提问作者idan ahal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:34:58