我创建了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的工作中看不到这份工作。
任何人都可以解释我或为此提供任何想法。
由于
答案 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