我有需要在指数退避失败后延迟的resque任务。但有时应该重置指数退避 - 如果作业朝着其最终目标取得进展,延迟应该重置为非常短,但如果它卡在失败中,它应该继续等待。所以作业会运行,如果失败,有两种不同的失败模式。在一种故障模式下,作业应该很快再次重试,但随后开始退避。在另一种故障模式下,作业应该比前一次尝试之前的延迟延迟更长的时间(比如 2 倍)。
似乎retry_criteria_check
应该能够做到这一点,但我不确定如何将它与Resque::Plugins::ExponentialBackoff
. 我假设我将通过抛出不同的异常来传达不同的故障模式,除非有人可以提出更好的方法。