0

我如下创建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 worker 会因为 1/0 抛出异常。但是重试一次后,我在sidekiq web ui的死工作中看不到这项工作。

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

谢谢

4

2 回答 2

1

在日志文件中,我发现了这一行:

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

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

所以,我通过添加来作为 mperham 指南

require 'sidekiq/api'

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

于 2014-09-03T00:45:19.633 回答
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

于 2014-09-02T03:44:29.060 回答