為工作設定工作逾時時間

預設情況下,每個任務最多運行 10 分鐘:您可以將其變更為更短的時間或更長的時間,最長可達 168 小時(7 天)。對於使用 GPU 的任務,最大可用逾時時間為 1 小時。

您可以依照本頁所述設定任務逾時時間。作業執行沒有明確的逾時時間:當所有任務完成時,作業執行即結束。

這些單位表示持續時間。您可以將超時持續時間指定為以秒、分鐘或小時為單位的整數值。例如,要將超時持續時間設定為 10 分鐘 5 秒,請將值指定為 605 秒。

如果您的作業啟用了重試功能,則逾時設定適用於任務的每次嘗試。 如果任務嘗試未在此時間內完成,則會停止。作業運行時間越長,就越容易遇到導致其失敗的問題,例如下游依賴項故障、記憶體不足錯誤或基礎設施問題。我們建議為所有作業啟用重試功能,尤其是對於運行時間較長的作業。

維護事件

各項工作都會定期進行維護。維護期間,所有正在進行的任務都會從目前機器遷移到另一台機器。 任務遷移期間處理過程會短暫暫停。

遷移過程會保留任務的狀態,但有一個明顯的例外:在維護事件期間,出站 VPC 網路連線會中斷。 我們建議您使用能夠處理偶爾連線重設的客戶端程式庫。

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「Jobs」頁面:

    前往 Cloud Run

  2. 按一下「Deploy container」(部署容器),填寫初始工作設定頁面。如要設定現有工作,請選取該工作,然後按一下「查看及編輯工作設定」

  3. 按一下「容器、連線、安全性」,展開工作屬性頁面。

  4. 按一下「一般」分頁標籤。

    • 任務逾時 欄位中,指定目前作業中作業任務的最大持續時間,並選擇 時間單位。您只能將逾時持續時間指定為 分鐘小時 的整數值。例如,要設定持續時間為 10 分 5 秒,請在 任務逾時 欄位中指定 605,並將 時間單位 選取為
  5. 按一下「建立」或「更新」

gcloud

  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 表示十分鐘零五秒。
  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

    更改項目:

    • JOB_NAME 改為您的工作名稱。
    • IMAGE_URL容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/job:latest
    • TIMEOUT 指定作業任務的最大持續時間,具體時間為多少時間,單位為多少。時間只能以秒、分鐘或小時為單位指定為整數值。例如,若要設定持續時間為 10 分鐘 5 秒,請指定 605

    您也可以指定更多配置細節,例如環境變數或記憶體限制。

  3. 更新現有工作設定:

    gcloud run jobs replace job.yaml

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

在 Terraform 設定的 google_cloud_run_v2_job 資源中新增下列項目:

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

  deletion_protection = false # set to "true" in production

  template {
    template {
      timeout = "3.500s"

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

查看任務超時設定

若要查看 Cloud Run 作業的目前任務逾時設定:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run jobs 頁面:

    前往 Cloud Run jobs

  2. 按一下所需工作,開啟「工作詳細資料」頁面。

  3. 按一下「查看及編輯工作設定」

  4. 在配置詳情中找到任務超時設定。

gcloud

  1. 使用下列指令:

    gcloud run jobs describe JOB_NAME
  2. 在傳回的配置中找到任務逾時設定。