重试作业

默认情况下,如果 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。

后续步骤