為工作設定重試參數

建立工作時,您可以使用 projects.locations.queues.tasks.create 方法,指定失敗工作的重試次數上限、設定重試嘗試的時間限制,以及控管嘗試之間的間隔。工作成功執行後,就會從佇列中移除。在所有情況下,工作保留期限上限也適用。

這項工作層級的重試設定會覆寫工作佇列層級的重試設定。

建立工作時設定重試

以下範例說明如何透過直接傳送要求至 Cloud Tasks API,在建立 HTTP 目標工作時設定重試參數。建立 App Engine 工作時,您可以使用相同的重試參數。如要進一步瞭解參數,請參閱 Task 資源的RetryConfig 設定。

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:必填。要建立工作所在的 Google Cloud 專案 ID。
  • REGION:必填。佇列部署的區域,例如 us-central1。
  • QUEUE_ID:必填。工作要加入的佇列 ID。
  • URL:必填。要求傳送至的完整網址。這個字串的開頭必須是 http:// 或 https://,例如:https://www.example.com。
  • SERVICE_ACCOUNT_EMAIL: 選用。用於產生授權權杖的服務帳戶電子郵件地址,該權杖會包含在執行工作時傳送至目標的要求中。服務帳戶必須與佇列位於相同專案。呼叫端必須具備服務帳戶的 iam.serviceAccounts.actAs 權限。

    如要產生 OAuth2 存取權杖 (而非 OpenID Connect 權杖),請將 oidcToken 欄位替換為 oauthToken,指定服務帳戶電子郵件地址。

  • MAX_ATTEMPTS:選填。任務的嘗試次數上限 (包括第一次)。如要允許無限次重試,請將這個值設為 -1。即使達到 MAX_ATTEMPTS 或設為 -1,MAX_RETRY_DURATION 仍適用。
  • MAX_RETRY_DURATION:選用。 工作第一次嘗試執行後,重試失敗工作的最長時間。值必須是結尾為「s」的字串,例如 5s。如要指定無限期,請將此值設為 0s。即使達到 MAX_RETRY_DURATION 或設為 0s,MAX_ATTEMPTS 仍適用。
  • MIN_INTERVAL:選填。重試嘗試之間的最短等待時間。這個值必須是結尾為「s」的字串,例如 5s。
  • MAX_INTERVAL:選填。重試之間等待時間上限。這個值必須是結尾為「s」的字串,例如 5s。
  • MAX_DOUBLINGS:選填。失敗工作重試間隔時間加倍的次數上限,超過這個次數後,間隔時間就會固定。工作重試間隔從 MIN_INTERVAL 開始, 然後加倍 MAX_DOUBLINGS 次,接著線性增加,最後以 MAX_INTERVAL 的間隔重試,最多 MAX_ATTEMPTS 次。

    舉例來說,如果 MIN_INTERVAL 為 10s、MAX_INTERVAL 為 300s,且 MAX_DOUBLINGS 為 3,重試間隔會加倍 3 次,以 2^3 * 10 秒的間隔線性增加,然後以 MAX_INTERVAL 的間隔重試,直到工作嘗試 MAX_ATTEMPTS 次為止:10 秒、20 秒、40 秒、80 秒、160 秒、240 秒、300 秒、300 秒,依此類推。

  • SCHEDULE_TIME:選用。 預計嘗試執行工作時間,採用 RFC 3339 格式,例如 2026-10-02T15:01:23Z。如果未設定時間或時間已過,Cloud Tasks 會將時間設為目前時間。

JSON 要求內文:

{
  "task": {
    "httpRequest": {
      "url": "URL",
      "httpMethod": "POST",
      "oidcToken": {
        "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL"
      }
    },
    "retryConfig": {
      "maxAttempts": MAX_ATTEMPTS,
      "maxRetryDuration": "MAX_RETRY_DURATION",
      "minBackoff": "MIN_INTERVAL",
      "maxBackoff": "MAX_INTERVAL",
      "maxDoublings": MAX_DOUBLINGS
    },
    "scheduleTime": "SCHEDULE_TIME"
  }
}

請展開以下其中一個選項,以傳送要求:

如果成功,回應主體會包含新建立的 Task 資源執行個體。

{
  "name": "projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_ID",
  "httpRequest": {
    "url": "URL",
    "httpMethod": "POST",
    "headers": {
      "User-Agent": "Google-Cloud-Tasks"
    },
    "oidcToken": {
      "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL",
      "audience": "URL"
    }
  },
  "retryConfig": {
    "maxAttempts": MAX_ATTEMPTS,
    "maxRetryDuration": "MAX_RETRY_DURATION",
    "minBackoff": "MIN_INTERVAL",
    "maxBackoff": "MAX_INTERVAL",
    "maxDoublings": MAX_DOUBLINGS
  },
  "scheduleTime": "SCHEDULE_TIME",
  "createTime": "2026-04-30T19:11:50Z",
  "dispatchDeadline": "600s",
  "view": "BASIC"
}

後續步驟