默认情况下,每个任务最长运行 10 分钟:您可以将其更改为更短或更长(最长 168 小时 [7 天])的时间。对超过 24 小时的超时时间的支持目前处于预览版阶段。
您可以按照本页中的说明设置任务超时。作业执行没有显式超时限制:所有任务都完成后,作业执行结束。
单位指定时长。您可以将超时时长指定为整数值,以秒、分钟或小时为单位。例如,如需将超时时长设置为 10 分 5 秒,请将值指定为 605
秒。
如果您的作业已启用重试,超时设置会应用于任务的每次尝试。如果任务尝试未能在此时间段内完成,它将会停止。作业运行时间越长,就越有可能遇到导致其失败的问题,例如下游依赖项失败、内存不足错误或基础架构问题。我们建议为所有作业启用重试,但对于包含长时间运行任务的作业,这一点尤为重要。
观察和处理维护事件
作业可能会定期执行维护事件。在维护事件期间,任何正在执行的任务都会从当前机器迁移到其他机器。此迁移过程会保留任务的整个状态。但是,迁移任务时,系统会暂停处理一小段时间。
维护事件是透明的,您无需对容器进行任何更改即可处理维护事件。请注意,每次任务开始和完成迁移时,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 作业的 Cloud Run Developer (
roles/run.developer
) 角色 -
服务身份的 Service Account User (
roles/iam.serviceAccountUser
) 角色
如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色和 Cloud Run IAM 权限。如果您的 Cloud Run 作业与 Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限和管理访问权限。
设置任务超时时间
如需为 Cloud Run 作业指定任务超时,请执行以下操作:
控制台
在 Google Cloud 控制台中,进入 Cloud Run 作业页面:
点击部署容器,然后选择作业以填写初始作业设置页面。如果要配置现有作业,请点击作业,然后点击修改。
点击容器、变量和 Secret、连接、安全性以展开作业属性页面。
点击常规标签页。
- 在任务超时字段中,指定当前作业中的作业任务的时长上限,并选择时间单位。您只能将超时时长指定为整数值,以秒、分钟或小时为单位。例如,如需将时长设置为 10 分 5 秒,请在任务超时字段中指定
605
,并将时间单位设置为秒。
- 在任务超时字段中,指定当前作业中的作业任务的时长上限,并选择时间单位。您只能将超时时长指定为整数值,以秒、分钟或小时为单位。例如,如需将时长设置为 10 分 5 秒,请在任务超时字段中指定
点击创建或更新。
gcloud
对于要创建的作业:
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 秒。
对于要更新的作业:
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
如果您要创建新的作业,请跳过此步骤。如果您要更新现有作业,请下载其 YAML 配置:
gcloud run jobs describe JOB_NAME --format export > job.yaml
更新
timeoutSeconds:
特性:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE timeoutSeconds: TIMEOUT
您需要进行如下替换:
- 将 JOB_NAME 替换为作业的名称。
- 将 IMAGE_URL 替换为对容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/job:latest
。 - 将 TIMEOUT 替换为作业任务的时长上限,并指定时间和单位。您只能将时间指定为整数值,以秒、分钟或小时为单位。例如,如需将时长设置为 10 分 5 秒,请指定
605s
。
您还可以指定更多配置详情,例如环境变量或内存限制。
更新现有作业配置:
gcloud run jobs replace job.yaml
Terraform
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
如需为 Cloud Run 作业指定任务超时,请使用 google_cloud_run_v2_job
资源并将以下代码段应用于 main.tf
文件:
查看任务超时设置
如需查看 Cloud Run 作业的当前任务超时设置,请执行以下操作:
控制台
在 Google Cloud 控制台中,进入 Cloud Run 作业页面:
点击相关作业以打开作业详情页面。
点击配置标签页。
在配置详细信息中找到任务超时设置。
gcloud
使用以下命令:
gcloud run jobs describe JOB_NAME
在返回的配置中找到任务超时设置。