Сидеки не найдено ни одной мертвой работы

Я создаю 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

Другие вопросы по тегам