2014-09-04 94 views
1

出於某種原因,Sidekiq沒有爲我運行任何工作。它可以讓它們很好地排隊,但它永遠不會將它們從隊列中移出。Sidekiq排隊工作,不排隊他們

我已經證實,Redis的運行:

ps aux | grep redis 
root  2756 0.0 0.0 140612 2656 ?  Sl Sep03 0:36 redis-server *:6379 
root  7489 0.0 0.0 110284 840 pts/0 S+ 09:19 0:00 grep redis 

我已確認Sidekiq運行:

bundle exec sidekiq -d -e production -L log/sidekiq.log 

我:

ps aux | grep sidekiq 
root  6732 0.1 1.9 2527436 148000 ?  Sl 09:04 0:03 sidekiq 3.2.1 CompleteSet-Rails [0 of 25 busy]                        
root  7901 0.0 0.0 110280 840 pts/0 S+ 09:44 0:00 grep sidekiq 

我使用開始Sidekiq已經確認它將作業添加到隊列中:

Sidekiq.redis { |r| r.lrange "queue:default", 0, -1 }.length 
=> 70 
UserMailer.delay.reset_password(User.third) 
=> "9fc420a5b21224e5b264b9e9" 
Sidekiq.redis { |r| r.lrange "queue:default", 0, -1 }.length 
=> 71 

我沒有使用自定義工作者類,我也沒有嘗試使用自定義的.yml或.rb配置文件。任何想法爲什麼它不執行工作?

編輯:

我也注意到,選擇不返回任何隊列。這可能與它有關嗎?

Sidekiq.options 
=> {:queues=>[], :labels=>[], :concurrency=>25, :require=>".", :environment=>nil, :timeout=>8, :error_handlers=>[], :lifecycle_events=>{:startup=>[], :quiet=>[], :shutdown=>[]}} 

回答

1

我沒有明確地將其設置爲查看日誌/ sidekiq.yml,或配置/初始化/ sidekiq.rb,但它無論如何檢查他們。在初始化文件中,我將它設置爲只從名爲production的隊列中讀取,但因爲我使用的是Mailer.delay.whatever,它正在寫入默認隊列,即使我已將它配置爲僅使用生產。如果要更改要寫入的隊列,請使用自定義工作器,或使用Mailer.delay(queue: name)將其放入所需的隊列中。