為工作設定工作逾時時間

根據預設,每項工作最多會執行 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 開發人員 (roles/run.developer)
  • 服務身分上的「服務帳戶使用者」 (roles/iam.serviceAccountUser)

如需與 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. 按一下「容器、磁碟區、連線與安全性」,展開工作屬性頁面。

  4. 點選「一般」分頁標籤。

    圖片

    • 在「工作逾時」欄位中,指定目前工作中工作任務的持續時間上限,並選取「時間單位」。您只能以整數值指定逾時時間長度,單位為分鐘小時。舉例來說,如要設定 10 分鐘 5 秒的時間長度,請在「Task timeout」欄位中指定 605,並選取「Time unit」為「second」
  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 為 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

    取代:

    • 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 工作頁面:

    前往 Cloud Run 工作

  2. 按一下您感興趣的工作,即可開啟「Job Details」(工作詳細資料) 頁面。

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

  4. 在設定詳細資料中找出工作逾時設定。

gcloud

  1. 使用下列指令:

    gcloud run jobs describe JOB_NAME
  2. 在傳回的設定中找出工作逾時設定。