跳到主要内容

自动重试未完成的执行任务

预计学习时间:4分钟 Make在创建每一个未完成的执行任务时会检查其来源。Make将自动重试由以下原因造成的未完成执行:

  • 速率限制错误(RateLimitError)
  • 连接错误(ConnectionError)
  • 模块超时错误(ModuleTimeoutError)

此外,还将重试那些使用中断错误处理器并启用了自动完成运行功能的未完成执行任务。 Make在重试未完成执行任务时,将执行以下步骤:

  1. Make计划对未完成的执行任务进行重试。
  2. Make执行重试。
  3. 根据重试结果,Make会安排进一步的尝试或将未完成的执行标记为已解决。

自动重试的调度

Make根据退避策略安排自动重试时间。该策略避免了短时间内多次遇到同样错误的情形。 例如,如果因应用不可用导致连接错误,应用需要一段时间恢复。Make将适当延长重试间隔,以便即使在发生原始错误较长时间后也能成功重试。

错误类型重试时间表
  • 速率限制错误
  • 连接错误
  • 模块超时错误

|

  1. 1分钟(在初始场景运行1分钟后)。
  2. 10分钟(在初始场景运行11分钟后)。
  3. 10分钟(在初始场景运行21分钟后)。
  4. 30分钟(在初始场景运行51分钟后)。
  5. 30分钟(在初始场景运行1小时21分钟后)。
  6. 30分钟(在初始场景运行1小时51分钟后)。
  7. 3小时(在初始场景运行4小时51分钟后)。
  8. 3小时(在初始场景运行7小时51分钟后)。

中断错误处理器处理的错误|如果你在错误处理器设置中启用了自动场景运行完成。默认配置如下:

  • 最大重试次数:3次
  • 重试间隔:15分钟

你可以在错误处理器设置中调整这些默认设置。 其他错误类型通常需要对未完成的执行进行修改和手动解决。Make 默认不会自动重试这些类型的错误。

自动重试的处理

Make安排重试后,将从引发错误的模块开始重新运行场景。 对每个场景,同时进行的未完成执行任务的重试限制为3次。如果同一个场景有更多未完成执行任务等待重试,Make将在上一批次完成后按批次进行重试,每批3次。 此外,如果原始场景正在运行,则不会启动重试。 同一个场景的重试遵循3次并行重试的限制。当Make需要从多个场景重试未完成的执行任务时,每个都有自己的限制。 这一限制防止在同时重试大量未完成执行时发生连续的速率限制错误。 例如: 假设你有一个每小时运行10分钟的场景,而第三方服务中断了5小时。

  • 该场景现在有5个未完成的执行任务等待自动重试。
  • Make首先等待如果原始场景正在运行则等待其结束,这可能需要10分钟(如果场景刚刚开始运行)。
  • 场景结束后,Make重试前三个未完成的执行任务,这需要额外10分钟(共计20分钟)。
  • Make在上一批次结束后重试剩余两个未完成执行任务,再次用去10分钟(共计30分钟)。
  • 又过了30分钟(总共1小时后),Make根据场景的时间表重新启动场景。

自动重试的结果

如果重试尝试成功,Make将未完成的执行任务标记为已解决并停止重试。 如果所有重试尝试都失败,Make将未完成的执行任务标记为未解决。随后你可以在引起错误的应用再次可用时重试此未完成执行任务,或者你也可以手动解决。