Sidekiq没有找到死亡工作

时间:2014-09-01 10:28:37

标签: sidekiq sidekiq-monitor

我创建了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})    

当然,由于1/0,sidekiq worker会抛出异常。但经过一次重试后,我在sidekiq web ui的工作中看不到这份工作。

任何人都可以解释我或为此提供任何想法。

由于

2 个答案:

答案 0 :(得分:1)

在日志文件中,我找到了这一行:

uninitialized constant Sidekiq::Middleware::Server::RetryJobs::DeadSet

然后,我谷歌并转到链接https://github.com/mperham/sidekiq/issues/1915

所以,我通过添加

作为mperham指南
require 'sidekiq/api'

它工作正常,失败的工作出现在死亡工作队列中

答案 1 :(得分:0)

使用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