设置任务超时(作业)

默认情况下,每个任务最长运行 10 分钟:您可以将其更改为更短或更长(最长 24 小时)的时间。

您可以按照本页中的说明设置任务超时。作业执行没有显式超时限制:所有任务都完成后,作业执行结束。

在重试时,超时设置适用于任务的每次尝试。如果任务尝试未能在此时间段内完成,它将会停止。

单位指定持续时间;例如,10m5s 为 10 分 5 秒。如果您未指定单位,则假定单位为秒。例如,值 10 为 10 秒。

观察和处理维护事件

作业可能会定期执行维护事件。在维护事件期间,任何正在执行的任务都会从当前机器迁移到其他机器。此迁移过程会保留任务的整个状态。但是,迁移任务时,系统会暂停处理一小段时间。

维护事件是透明的;您无需对容器进行任何更改即可处理维护事件。请注意,每次任务开始和完成迁移时,Cloud Run 都会输出一条日志消息。

但是,如果要以特定方式监控或处理维护事件,您可以捕获 SIGTSTP 信号,此信号会在任务迁移之前 10 秒发送。迁移后,任务会在任务重启后立即收到 SIGCONT 信号。

下面的 Go 示例函数会捕获这些信号并输出日志条目:

func testSignals() {
    sigs := make(chan os.Signal, 1)
    signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT)
    go func() {
        for  {
            sig := <-sigs
            log.Printf("Got Signal: %v", sig)
        }
    }()
 }
 

所需的角色

如需获得配置 Cloud Run 作业所需的权限,请让管理员向您授予以下 IAM 角色:

如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色Cloud Run IAM 权限。如果您的 Cloud Run 作业与 Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限管理访问权限

设置任务超时时间

如需为 Cloud Run 作业指定任务超时,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,进入 Cloud Run 作业页面:

    转到 Cloud Run

  2. 如果要配置新作业,请点击作业标签页,然后根据需要填写初始作业设置页面。如果要配置现有作业,请点击作业,然后点击修改

  3. 点击容器、变量和 Secret、连接、安全性以展开作业属性页面。

  4. 点击常规标签页。

    映像

    • 为当前作业中的作业任务指定时长上限,您需要同时指定时间量和单位:例如,10m5s 表示 10 分钟 5 秒。
  5. 点击创建更新

命令行

  1. 对于要创建的作业:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT

    替换

    • JOB_NAME 替换为作业的名称。
    • IMAGE_URL 替换为对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/job:latest
    • TIMEOUT 替换为作业任务的最长时长,并指定时间和单位:例如 10m5s 为 10 分 5 秒。
  2. 对于要更新的作业:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

  1. 如果您要创建新的作业,请跳过此步骤。如果您要更新现有作业,请下载其 YAML 配置

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. 更新 timeoutSeconds: 特性:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE
              timeoutSeconds: TIMEOUT

    TIMEOUT 替换为作业任务的最长时长,并指定时间和单位:例如 10m5s 为 10 分 5 秒。

    您还可以指定更多配置,例如环境变量或内存限制。

  3. 更新现有作业配置:

    gcloud run jobs replace job.yaml

Terraform

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

如需为 Cloud Run 作业指定任务超时,请使用 google_cloud_run_v2_job 资源并将以下代码段应用于 main.tf 文件:

resource "google_cloud_run_v2_job" "default" {
  name         = "cloud-run-job-timeout"
  location     = "us-central1"
  launch_stage = "BETA"

  template {
    template {
      timeout = "3.500s"

      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job:latest"
      }
    }
  }
}

查看任务超时设置

如需查看 Cloud Run 作业的当前任务超时设置,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,进入 Cloud Run 作业页面:

    转到 Cloud Run 作业

  2. 点击相关作业以打开作业详情页面。

  3. 点击配置标签页。

  4. 在配置详细信息中找到任务超时设置。

命令行

  1. 使用以下命令:

    gcloud run jobs describe JOB_NAME
  2. 在返回的配置中找到任务超时设置。