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

升级Python至3.12.0后Cloud Function调用Dataflow出现超时提示

解决Cloud Function升级Python3.12后Dataflow调用的超时提示问题

问题根源

升级到Python3.12后,googleapiclient默认使用的httplib2传输层不再支持单请求级别的超时设置,必须在构建httplib2.Http实例时就指定全局超时参数,否则会触发提示。之前用socket.setdefaulttimeout的方式无效,因为这是全局socket层面的超时设置,和httplib2实例自身的超时配置不关联。

修复代码

直接创建带超时的httplib2.Http实例,传入build方法替换默认客户端:

from googleapiclient.discovery import build
import httplib2

def run_dataflow_template(project_id, gcsPath, job_name, parameters):
    '''
    run dataflow template
    '''
    # 构建带超时的httplib2实例,这里设置180秒超时
    http_client = httplib2.Http(timeout=180)
    dataflow = build('dataflow', 'v1b3', cache_discovery=False, http=http_client)

    request = dataflow.projects().templates().launch(
        projectId=project_id,
        gcsPath=gcsPath,
        body={'jobName': job_name, 'parameters': parameters, }
    )
    return request.execute()

关键说明

  • 通过httplib2.Http(timeout=180)设置的超时会作用于该实例发起的所有请求,单位为秒,可根据实际需求调整数值。
  • 将自定义的http实例传入build方法的http参数,替代默认的无超时配置实例,即可消除目标提示。

内容的提问来源于stack exchange,提问作者Winston Kyu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:22:34