重试作业

默认情况下,如果 Cloud Scheduler 作业未收到来自其处理程序的确认,则该作业会被视为失败,并将根据您配置的指数退避算法进行重试。在创建或更新 Cloud Scheduler 作业时,您可以通过以下方式确定此重试行为:

重试设置

下表介绍了您可以配置的重试设置。

重试次数上限

系统将使用 maxDoublings 所述的指数退避算法程序运行作业的尝试次数。

说明

如果将 retryCount 设置为非零数字,Cloud Scheduler 将使用指数退避算法重试失败的作业,重试次数为 retryCount,直到作业成功或重试次数用尽。请注意,如果重试持续到下一个预定执行时间,则可能会跳过该时间。

如果 retryCount 为 0(且 maxRetryDuration 也为 0),则作业尝试失败时不会重试。相反,Cloud Scheduler 将等待下一次预定的执行时间。

不允许使用大于 5 的值和负值。

默认 默认值为 0。
控制台标签 重试次数上限
CLI 标志 --max-retry-attempts
API 字段 retryCount

重试时长上限

重试失败作业的时间限制,从首次尝试执行时开始计算。如果同时指定了 retryCount,则系统会重试作业,直到同时达到这两个限制为止。

说明

以秒为单位的时长,最多包含九个小数位,并以“s”结尾,例如“3.5s”。

时长为 0 表示重试时长不受限制。不过,如果 retryCount 也为 0,则作业尝试失败时不会重试。

默认 默认值为 0 秒。
控制台标签 重试时长上限
CLI 标志 --max-retry-duration
API 字段 maxRetryDuration

退避时长下限

作业失败后等待重试的最短时间。

说明

以秒为单位的时长,最多包含九个小数位,并以“s”结尾,例如“3.5s”。

默认 默认值为 5 秒。
控制台标签 退避时长下限
CLI 标志 --min-backoff
API 字段 minBackoffDuration

退避时长上限

作业失败后等待重试的最长时间。

说明

以秒为单位的时长,最多包含九个小数位,并以“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^2 * 10 秒。
  4. 如果适用,作业将以 maxBackoffDuration 的间隔重试,直到作业尝试次数达到 retryCount 次(最多 5 次)。

因此,请求将以 10 秒、20 秒、40 秒、80 秒、120 秒的时间间隔重试。

默认 默认值为 5。
控制台标签 加倍次数上限
CLI 标志 --max-doublings
API 字段 maxDoublings

重试示例

以下示例展示了 Cloud Scheduler 作业未成功完成时的重试行为。

如果 retryCount 和 maxRetryDuration 均未设置

这两个设置的默认值均为 0,作业不会重试。

请注意,Cloud Scheduler 将尝试在下一个预定执行时间运行作业。

如果同时设置了 retryCount 和 maxRetryDuration

作业将至少重试 retryCount 次,直到达到 maxRetryDuration。

请注意,作业的重试次数可能多于 retryCount。

如果设置了 retryCount 但未设置 maxRetryDuration

maxRetryDuration 设置的默认值为 0,作业将重试 retryCount 次。

如果未设置 retryCount,但设置了 maxRetryDuration

作业将重试任意次数(最多 5 次),直到达到 maxRetryDuration。