Rails 5 + ActiveJob + Sidekiq: Остановить и записать ошибку после 10 попыток

Попытка запрограммировать задание, которое после 10 попыток (из всех типов исключений) сообщит об ошибке и завершится. Не могу заставить его работать. Пробовал этот ответ r и это один тоже. Ни то, ни другое не сработало. Лучшим решением будет доступ к retry_count из метода perform.


person Yossi Shasho    schedule 23.07.2020    source источник


Ответы (1)


Я думаю, что вы просите о крючке sidekiq_retries_exhausted. Он будет вызываться после того, как ваши попытки будут завершены, и задание перейдет в очередь мертвых. Просто установите количество повторных попыток на 10 и реализуйте эту ловушку.

config.death_handlers тоже может быть интересно.

См. Документы здесь: https://github.com/mperham/sidekiq/wiki/Error-Handling#configuration

person Siim Liiser    schedule 23.07.2020
comment
Это работает с ActiveJob? Я не использую include Sidekiq::Worker - person Yossi Shasho; 26.07.2020
comment
Мне кажется, что вам нужно решение из того же потока, который вы уже просматривали, но того, который вы не пробовали (stackoverflow .com / a / 48302041/4473406) с помощью retry_on stackoverflow.com/a/48302041/4473406. Вы можете retry_on StandardError, чтобы перехватить все исключения и передать блок, который будет вызываться после завершения повторных попыток. Если вы хотите, чтобы задание попало в мертвую очередь, повторно вызовите ошибку из блока и установите для параметра retry значение false на уровне sidekiq. Дайте мне знать, если вы хотите, чтобы я отредактировал свой ответ. - person Siim Liiser; 27.07.2020
comment
retry_on StandardError - хорошая идея! Я попробую. Спасибо - person Yossi Shasho; 28.07.2020