2014-11-06 70 views
2

我有一個Rails應用程序使用引擎,其中定義了Sidekiq工作人員。工作人員的perform_async在引擎內的控制器中調用。工作人員的perform完成了通過該控制器傳入的參數的工作。工作者特定隊列也在工作者類中定義。但是,當請求進入該控制器時,它會從'perform_async'被推送到redis服務器,併到達正確的隊列。 A bundle exec sidekiq啓動Sidekiq。但是,工作人員的perform從未得到執行。檢查sidekiq用戶界面後,我可以看到該作業位於正確的隊列中。 這是我的工人怎麼看起來像Sidekiq工作人員不能從Rails引擎工作

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顯示,ARG遊戲中的「潘多」排隊。 sidekiq進程從不處理該隊列或甚至默認進程。

回答

1

你必須告訴哪個隊列來看看sidekiq過程:

bundle exec sidekiq -q pando 

否則過程只能眼睜睜地看着「默認」的隊列。

+0

使用sidekiq.yml工作與他們中定義的隊列?以及如何在引擎中使用它們? – absessive 2014-11-06 17:01:54

+0

根據文檔sidekiq.yml也可以做到這一點:https://github.com/mperham/sidekiq/wiki/Advanced-Options – BroiSatse 2014-11-06 17:06:32