為工作設定重試參數

建立工作時,您可以使用 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:選用。工作嘗試次數上限 (包括第一次)。如要允許無限次重試,請將此值設為 -1MAX_RETRY_DURATION,即使達到 MAX_ATTEMPTS 或設為 -1,仍適用這項規定。
  • MAX_RETRY_DURATION:選用。 重試失敗工作的時間上限,從首次嘗試執行工作時起算。值必須是以「s」結尾的字串,例如 5s。如要指定無限期,請將此值設為 0sMAX_ATTEMPTS仍適用,即使達到 MAX_RETRY_DURATION 或設為 0s 也是如此。
  • MIN_INTERVAL:選用。重試之間須至少等待多長時間。值必須是結尾為「s」的字串,例如 5s
  • MAX_INTERVAL:選用。重試之間等待時間上限。值必須是結尾為「s」的字串,例如 5s
  • MAX_DOUBLINGS:選用。失敗工作重試間隔時間加倍遞增到常數之前,要將間隔時間加倍的次數上限。工作重試間隔從 MIN_INTERVAL 開始,然後以雙倍增加 MAX_DOUBLINGS 次,接著以線性方式增加,最後則按 MAX_INTERVAL 的間隔重試,直到 MAX_ATTEMPTS 次為止。

    舉例來說,如果 MIN_INTERVAL10sMAX_INTERVAL300s,且 MAX_DOUBLINGS3,重試間隔會加倍 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"
}

後續步驟