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

基于Prefect与Google Cloud Run:单作业内为Flow生成新执行ID

解决方案:让Prefect Cloud Run Push工作池复用固定作业名称

核心问题在于Cloud Run Push工作池默认会为每个Flow运行创建临时作业,要实现每个部署对应固定名称作业、每次运行生成新执行ID,需要调整部署配置中Cloud Run作业的名称参数,而非你之前尝试的job_variable_name。

正确配置方式

修改你的prefect.yaml部署配置,直接指定Cloud Run作业名称为部署名称(用Prefect模板变量自动填充):

deployments:
  - name: prefect-daily-testrun  # 你的部署名称,会作为Cloud Run作业名
    entrypoint: flows/daily.py:daily_flow
    work_pool:
      name: cloud-run-push-pool  # 你的Cloud Run Push工作池名称
      work_queue_name: default
      job_variables:
        image: gcr.io/your-project-id/your-prefect-image:latest  # 固定镜像
        service_account_email: your-prefect-service-account@your-project-id.iam.gserviceaccount.com
        job_name: "{{ deployment.name }}"  # 关键:绑定作业名到部署名称

或者通过infra_overrides配置:

deployments:
  - name: prefect-daily-testrun
    entrypoint: flows/daily.py:daily_flow
    work_pool:
      name: cloud-run-push-pool
    infra_overrides:
      job_name: "{{ deployment.name }}"
    infrastructure:
      type: cloud-run-job
      image: gcr.io/your-project-id/your-prefect-image:latest
      service_account_email: your-prefect-service-account@your-project-id.iam.gserviceaccount.com

配置说明

  • {{ deployment.name }}是Prefect内置的模板变量,会自动替换为当前部署的名称,确保每个部署对应唯一的Cloud Run作业名。
  • 你之前尝试的job_variable_name是用来映射Prefect变量到Cloud Run作业环境变量的参数,和设置作业名称无关,因此没有效果。

注意事项

  1. 确保Cloud Run作业的核心配置(镜像、资源配额、服务账号等)固定,不要在每次运行时动态变更,否则可能触发新建作业。
  2. 首次配置后运行Flow,会创建以部署名称命名的Cloud Run作业;后续每次运行都会在该作业下生成新的执行(对应Cloud Run的Job Execution),而非新建作业。
  3. 若之前已生成大量临时作业,可手动清理Cloud Run控制台中的旧作业,避免混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:48:19