0

我有需要在指数退避失败后延迟的resque任务。但有时应该重置指数退避 - 如果作业朝着其最终目标取得进展,延迟应该重置为非常短,但如果它卡在失败中,它应该继续等待。所以作业会运行,如果失败,有两种不同的失败模式。在一种故障模式下,作业应该很快再次重试,但随后开始退避。在另一种故障模式下,作业应该比前一次尝试之前的延迟延迟更长的时间(比如 2 倍)。

似乎retry_criteria_check应该能够做到这一点,但我不确定如何将它与Resque::Plugins::ExponentialBackoff. 我假设我将通过抛出不同的异常来传达不同的故障模式,除非有人可以提出更好的方法。

4

1 回答 1

1

使用这种逻辑,将作业更改为接受 previous_attempt_delay、previous_attempt_failure 然后计算作业本身内的新重试可能会更简单。然后通过创建要在计算的时间执行的新作业(并传递这两个参数)来回退。

于 2012-03-16T23:57:39.670 回答