Сидеки не найдено ни одной мертвой работы
Я создаю sidekiq worker следующим образом и исполняю его
require 'sidekiq'
class HardWorker
include Sidekiq::Worker
sidekiq_options :queue => 'crawler'
def perform(name, count)
logger.info "#{name}: #{count}"
puts 'Doing hard work'
puts 1/0
end
end
А затем и поставьте задачу в очередь, запустив этот код:
Sidekiq::Client.push({'class' => 'HardWorker', 'queue' => 'crawler', 'args' => ['name 1', 1], 'retry' => 1})
Конечно, работник Sidekiq будет выбрасывать исключение из-за 1/0 . Но после одной повторной попытки я не вижу эту работу в мертвой работе sidekiq web ui.
Так может кто-нибудь объяснить мне или представить какую-либо идею для этого.
Спасибо
2 ответа
В лог-файле я нашел эту строку:
uninitialized constant Sidekiq::Middleware::Server::RetryJobs::DeadSet
А потом я гуглю и захожу по ссылке https://github.com/mperham/sidekiq/issues/1915
Итак, я сделал как руководство по mperham, добавив
require 'sidekiq/api'
Работало правильно, сбойные задания появлялись в очереди мертвых заданий
Просто лучший способ сделать что-то с sidekiq, не уверен, решит ли это проблему, но стоит попробоватьhard_worker.rb
require 'sidekiq'
class HardWorker
include Sidekiq::Worker
sidekiq_options queue: 'crawler', retry: 1
def perform(name, count)
logger.info "#{name}: #{count}"
puts 'Doing hard work'
puts 1/0
end
end
Поставить в очередь задание HardWorker.peform_async('name 1', 1)
Для получения дополнительной информации, пожалуйста, обратитесь https://github.com/mperham/sidekiq/wiki/Error-Handling