2011-08-11 10 views
5

herokuの杉のスタックにresqueを実行し、インターフェイスをレールにマウントしました。ヘロクの杉のスタックを再焼成する作業員が終了した後に作業員の数がまだ残っています

私が作業を開始すると、すべてうまく動作します。ワーカーはジョブを処理します。しかし、私は労働者を殺すと、Resqueはまだ労働者が利用可能だと思っています。私が別の労働者を始めたとき、それは2人の労働者がいると思うが、実際には1人しか走っていない。

また、こちらのフォームにはhttp://devcenter.heroku.com/articles/psというヒロクがワーカーを殺すとSIGTERMを送信し、終了しなければSIGKILLを送信すると伝えます。ここ

は、私のワーカーログ

2011-08-11T02:32:45+00:00 heroku[worker.1]: Starting process with command `bundle exec rake resque:work QUEUE=*` 
2011-08-11T02:32:46+00:00 heroku[worker.1]: State changed from starting to up 
2011-08-11T02:33:58+00:00 heroku[worker.1]: State changed from up to stopping 
2011-08-11T02:34:00+00:00 heroku[worker.1]: Stopping process with SIGTERM 
2011-08-11T02:34:09+00:00 heroku[worker.1]: Error R12 (Exit timeout) -> Process failed to exit within 10 seconds of SIGTERM 
2011-08-11T02:34:09+00:00 heroku[worker.1]: Stopping process with SIGKILL 
2011-08-11T02:34:11+00:00 heroku[worker.1]: Process exited 

である私は私のプロセスが終了する10秒、より多くを取ることがわかります。これは私が作業者の仕事にレール環境をロードするので何かする必要がありますか?

これは私が問題を見つけた私のrakeタスクlib/tasks/resque.rake

require "resque/tasks" 

task "resque:setup" => :environment 

答えて

5

、rakeタスクのENVを渡して、この起こっています。 QUEUE='*'を渡すときのように。ここで

https://github.com/defunkt/resque/issues/319#issuecomment-1789239

より完全な問題であり、問​​題はresqueのみすべてQUEを実行させること、https://github.com/defunkt/resque/issues/368

でも私の一時的なパッチで円盤投げにまだあります。

https://github.com/yulrizka/resque

+0

あなたもからクリーンアップすることができますredisに接続し、.del( 'workers')を実行することでコンソール – Bob

2

ahmy、あなたのソリューションに基づいて

、私はresqueをフォーク伴わないものを思い付きました。

私はresque.rakeでこれを置く:

task "resque:setup" => :environment do 
    ENV['QUEUE'] = '*' 
end 

をしてProfileでこれを置く:

worker: bundle exec rake resque:work 

Gemfileでこれを置く:

gem 'resque', :git => 'git://github.com/defunkt/resque.git' 
関連する問題