我有一个使用引擎的rails应用程序,其中定义了Sidekiq worker。在引擎内的控制器中调用worker perform_async
。工作人员perform
对通过该控制器传入的参数进行工作。工作者特定队列也在worker类中定义。但是,当请求进入该控制器时,它会从' perform_async'推送到redis服务器,到达正确的队列。 bundle exec sidekiq
启动Sidekiq。但是,工作人员perform
永远不会被执行。检查sidekiq UI,我可以看到作业在正确的队列中。
这就是我的工人的样子
require 'pando'
class PandoWorker
include Sidekiq::Worker
sidekiq_options :queue => :pando, :backtrace=> true
def perform(*args)
puts "in here"
puts args
end
end
因此,在这种情况下,sidekiq UI显示args在' pando'中排队。 sidekiq进程永远不会从该队列进行处理,甚至不会进行默认处理。
答案 0 :(得分:1)
你必须告诉sidekiq进程要查看哪个队列:
bundle exec sidekiq -q pando
否则,流程只是在观看默认情况。队列中。