重試工作

根據預設,如果 Cloud Scheduler 工作未收到處理常式的確認訊息,系統就會將工作視為失敗,並根據您設定的指數輪詢重試工作。建立或更新 Cloud Scheduler 工作時,您可以透過下列方式決定重試行為:

重試設定

下表說明可設定的重試設定。

重試次數上限

系統會嘗試使用 maxDoublings 所述的指數輪詢程序執行工作的次數。

說明

如果 retryCount 設為非零數字,Cloud Scheduler 會使用指數輪詢,重試失敗的工作 retryCount 次,直到工作成功或重試次數用盡為止。請注意,如果重試持續到下一個排定的執行時間,系統可能會略過該時間。

如果 retryCount 為 0 (且 maxRetryDuration 也為 0),則系統「不會在工作嘗試失敗時重試」。Cloud Scheduler 會等待下一個排定的執行時間。

不得輸入大於 5 的值和負值。

預設 預設值為 0。
控制台標籤 重試次數上限
CLI 旗標 --max-retry-attempts
API 欄位 retryCount

重試持續時間上限

重試失敗工作的時間限制,從首次嘗試執行時開始算起。如果同時指定了 retryCount,系統會重試工作,直到達到這兩個上限為止。

說明

時間長度以秒為單位,最多可有 9 個小數位數,並應以「s」結尾,例如「3.5s」。

如果時間長度為 0,表示重試時間長度沒有限制。不過,如果 retryCount 也為 0,則系統「不會在工作失敗時重試」

預設 預設值為 0 秒。
控制台標籤 重試持續時間上限
CLI 旗標 --max-retry-duration
API 欄位 maxRetryDuration

輪詢持續時間下限

工作失敗後等待重試的時間下限。

說明

時間長度以秒為單位,最多可有 9 個小數位數,並應以「s」結尾,例如「3.5s」。

預設 預設值為 5 秒。
控制台標籤 輪詢持續時間下限
CLI 旗標 --min-backoff
API 欄位 minBackoffDuration

輪詢持續時間上限

工作失敗後等待重試的時間上限。

說明

時間長度以秒為單位,最多可有 9 個小數位數,並應以「s」結尾,例如「3.5s」。

預設 預設值為 3600 秒 (1 小時)。
控制台標籤 輪詢持續時間上限
CLI 旗標 --max-backoff
API 欄位 maxBackoffDuration

加倍次數上限

失敗工作重試間隔時間加倍遞增到常數之前,要將間隔時間加倍的次數上限。

說明 重試之間的時間會根據加倍次數上限以雙倍增加。maxDoublings

工作重試間隔從 minBackoffDuration 開始,然後以雙倍增加 maxDoublings 次,接著以線性方式增加,最後則按 maxBackoffDuration 的間隔重試,直到 retryCount 次為止。例如:

如果 minBackoffDuration 為 10 秒、maxBackoffDuration 為 300 秒,且 maxDoublings 為 3:

  1. 系統會在 10 秒內重新嘗試執行工作。
  2. 重試間隔會加倍三次。
  3. 重試間隔隨後會以線性方式增加 2^3 * 10 秒。
  4. 如果適用,工作會以 maxBackoffDuration 的間隔重試,直到工作嘗試次數達到 retryCount 次 (最多 5 次)。

因此,系統會在 10 秒、20 秒、40 秒、80 秒和 160 秒後重試要求。

如果 minBackoffDuration 為 10 秒、maxBackoffDuration 為 120 秒,且 maxDoublings 為 2:

  1. 系統會在 10 秒內重新嘗試執行工作。
  2. 重試間隔會加倍兩次。
  3. 重試間隔隨後會以線性方式增加 2^3 * 10 秒。
  4. 如果適用,工作會以 maxBackoffDuration 的間隔重試,直到工作嘗試次數達到 retryCount 次 (最多 5 次)。

因此,系統會分別在 10 秒、20 秒、40 秒、120 秒和 120 秒後重試要求。

預設 預設值為 5。
控制台標籤 加倍次數上限
CLI 旗標 --max-doublings
API 欄位 maxDoublings

重試範例

以下範例說明 Cloud Scheduler 工作未順利完成時的重試行為。

如果 retryCountmaxRetryDuration 都未設定

這兩項設定的預設值都是 0,因此工作完全不會重試。

請注意,Cloud Scheduler 會在下一個排定執行時間嘗試執行工作。

如果同時設定 retryCountmaxRetryDuration

工作會重試至少 retryCount 次,直到達到 maxRetryDuration 為止。

請注意,工作重試次數可能超過 retryCount

如果已設定 retryCount,但未設定 maxRetryDuration

maxRetryDuration 設定預設為 0,工作會重試 retryCount 次。

如果未設定 retryCount,但已設定 maxRetryDuration

工作會重試任意次數 (最多 5 次),或直到達到 maxRetryDuration 為止。