0

指数関数的バックオフで失敗した後に遅延する必要がある resque タスクがあります。ただし、指数バックオフをリセットする必要がある場合もあります。ジョブが最終的な目標に向かって進行している場合は、遅延を非常に短くリセットする必要があります。したがって、ジョブは実行され、失敗した場合、2 つの異なる失敗モードがあります。1 つの失敗モードでは、すぐにジョブを再試行する必要がありますが、その後バックオフを開始します。他の失敗モードでは、ジョブは前回の試行前の遅延よりも長く (たとえば 2 倍) 遅延する必要があります。

これretry_criteria_checkができるはずのようですが、 と統合する方法がわかりませんResque::Plugins::ExponentialBackoff。誰かがより良い方法を提案できない限り、さまざまな例外をスローすることでさまざまな障害モードを伝えると思います。

4

1 に答える 1

1

そのようなロジックでは、ジョブを変更して previous_attempt_delay、previous_attempt_failure を受け入れてから、ジョブ自体の中で新しい再試行がどうあるべきかを計算する方がおそらく簡単でしょう。次に、計算された時間に実行される新しいジョブを作成してバックオフを行います (そして、これらの 2 つのパラメーターを渡します)。

于 2012-03-16T23:57:39.670 に答える