Повторить задание sidekiq, если оно находится в очереди на рельсах

Я хочу написать задание cron, которое извлекает задание sidekiq из мертвой очереди и повторяет его, поскольку мы можем сделать это из веб-интерфейса sidekiq, я хочу сделать то же самое с помощью кода.

1 ответ

Доступ к мертвой очереди осуществляется с помощью Sidekiq::DeadSet, у которого есть retry_allметод.

Sidekiq::DeadSet.new.retry_all

Это тонкая оболочка для перебора каждого задания в очереди и вызова retry. SideKiq::DeadSet является перечислимым, поэтому вы можете использовать такие методы, какselect а также each. На вики-странице есть хороший пример.

ds = Sidekiq::DeadSet.new

# Retry only jobs of FixedWorker class whose first argument is 123.
ds.select { |job|
  job.klass == 'FixedWorker' && job.args[0] == 123
}.map(&:retry)
Другие вопросы по тегам