2

私は Delayed_jobs から Resque に移行しており、多くのジョブが常にキューに入れられていることを考えると (将来いくつか)、安全な新しいリリースを行うためにいつワーカーを 0 にスケールダウンできるかを知ることは不可能です。

Heroku のワーカーに現在のジョブの処理を終了するが、新しいジョブを実行しないように安全に伝える方法はありますか?

そうすれば、ジョブが何も処理していないときに、ワーカーをゼロにスケールダウンして、Heroku で新しいバージョンを安全にリリースできます。

その後、ワーカー数をスケールアップして処理を再開できます。

4

1 に答える 1

0

Resque ワーカーは、いくつかの異なるシグナルに応答します。

QUIT - Wait for child to finish processing then exit
TERM / INT - Immediately kill child then exit
USR1 - Immediately kill child but don't exit
**USR2 - Don't start to process any new jobs**
CONT - Start to process new jobs again after a USR2 

あなたの場合、新しいジョブを処理したくないので、使用できますUSR2

heroku のシグナルの詳細を読む

http://hone.herokuapp.com/resque/2012/08/21/resque-signals.html

プロセスIDを知り、シグナルを送信する必要があります

USR2 rscue.pid
于 2015-12-16T14:19:46.167 に答える