如何延长调用Cloud Run Job的API请求超时时间
解决Cloud Run Job API请求超时导致Airflow DAG失败的问题
你遇到的问题是Airflow调用Cloud Run Job的API请求默认超时时间为900秒(15分钟),但Job实际需要运行30分钟,导致operation.result()提前触发超时报错,而Cloud Run Job本身仍能正常执行完成。要解决这个问题,只需调整API请求的等待超时时间即可,无需修改Cloud Run Job自身的配置。
修改你的代码如下:
def run_cloudrun_job(**kwargs): client = run_v2.JobsClient() request = run_v2.RunJobRequest( name=f"projects/project_id/locations/region/jobs/job_name", overrides=overrides, ) operation = client.run_job(request=request) # 设置超时时间为30分钟(1800秒),与你的Job执行时长匹配 response = operation.result(timeout=1800)
补充说明:
timeout参数单位为秒,可根据Job实际执行时长灵活调整,比如Job最长可能运行40分钟,就设置为2400秒。- 如果需要全局统一设置所有API请求的超时时间,也可以在创建
JobsClient时配置:
from google.api_core.client_options import ClientOptions def run_cloudrun_job(**kwargs): client_options = ClientOptions(timeout=1800) client = run_v2.JobsClient(client_options=client_options) request = run_v2.RunJobRequest( name=f"projects/project_id/locations/region/jobs/job_name", overrides=overrides, ) operation = client.run_job(request=request) response = operation.result()
这样设置后,Airflow的DAG任务会等待Cloud Run Job执行完成后再结束,不会因API请求超时提前失败。
内容的提问来源于stack exchange,提问作者Aym
相关产品推荐
相关产品推荐

