Сброс экспоненциального отката с помощью Resque-retry - PullRequest
0 голосов
/ 15 марта 2012

У меня есть задачи восстановления, которые нужно отложить после сбоя с экспоненциальной отсрочкой.Но иногда экспоненциальный откат должен быть сброшен - если задание продвигается к своей конечной цели, задержка должна быть сброшена до очень короткой, но если она застряла, не получится, она должна продолжать ждать.Таким образом, задание будет выполнено, и в случае его сбоя будут два разных режима отказа.В одном режиме сбоя задание следует повторить очень скоро, но затем начать откат.В другом режиме сбоя задание должно быть отложено дольше (скажем, в 2 раза), чем задержка перед предыдущей попыткой.

Кажется, что retry_criteria_check должно быть в состоянии сделать это, но я не уверенкак интегрировать это с Resque::Plugins::ExponentialBackoff.Я предполагаю, что сообщу о различных режимах сбоев, выдавая разные исключения, если кто-то не может предложить лучший способ.

1 Ответ

1 голос
/ 17 марта 2012

С такой логикой, вероятно, было бы проще изменить задание так, чтобы оно принимало значение previous_attempt_delay, previous_attempt_failure, а затем вычислять, какой должна быть новая повторная попытка внутри самого задания. Затем откатитесь, создав новую работу, которая будет выполняться в рассчитанное время (и передайте эти 2 параметра).

...