建立工作時,您可以使用 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"
}