设置任务超时(作业)

默认情况下,每个任务最长运行 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 作业指定任务超时,请执行以下操作:

控制台

  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

使用 gcloud run jobs describe --format export 命令下载并查看现有作业配置,该命令会生成清理后的 YAML 格式的结果。然后,修改下述字段,并使用 gcloud run jobs replace 命令上传修改后的 YAML。请务必严格按照说明修改字段。

  1. 要查看和下载配置,请运行以下命令:

    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. 在返回的配置中找到任务超时设置。