web-dev-qa-db-ja.com

Rails:sidekiqを再起動する方法は?

Sidekiq gemを使用して、バックグラウンドでAPI呼び出しを実行しています。私は次のようなデーモンプロセスでsidekiqを実行しました:

  bundle exec sidekiq -d

メソッドにいくつか変更を加えたので、sidekiqを再起動します。私は以下のコマンドを使用してsidekiqを殺そうとしました:

  kill -9 process_id 

しかし、それは機能していません。 sidekiqプロセスを再起動するコマンドを知りたい。何かアイデアがあれば、私と共有してください。

以下のコマンドも試しました:

 sidekiqctl stop /path/to/pid file/pids/sidekiq.pid
22
Can Can

Proces_idを見つけたら、以下のコマンドを使用します。これにより、ワーカーは新しいジョブを取得できなくなり、既存のジョブが終了します。

kill -USR1 [PROCESS_ID]

その後、あなたはそれらを殺すことができます

kill -TERM [PROCESS_ID]

また、これについてはsidekiq/wikiにSignalsと呼ばれるページがあります。

[編集]

ここ はシグナルページです。

[編集]

チェック ビデオ

24
alexsmn

開始:

$ bundle exec sidekiq -d -P tmp/sidekiq.pid -L log/sidekiq.log 

どこ -d悪魔化、-P pidファイル、-Lログファイル。

やめる:

$ bundle exec sidekiqctl stop tmp/sidekiq.pid 0
Sidekiq shut down gracefully.

どこ 0はSidekiqが終了するまで待機する秒数です。

47
hlcs

デーモンを実行し続けるには、間違いなくHardWorkerクラスで適切なエラー処理を行う必要がありますが、システムプロセスで見つからない場合は、下のコマンドを使用してsidekiqランナーを再起動することもできます。

x=`ps aux | grep sidekiq | grep -v grep | awk '{print $2}'`; [ "$x" == "" ] && cd /path/to/deploy && bundle exec sidekiq -d -L /path/to/deploy/log/sidekiq.log -C /path/to/deploy/config/sidekiq.yml -e production

これは基本的にps aux | grep sidekiq | grep -v grep | awk '{print $2}'を使用してPIDを探し、それを変数xに保存します。次に、空の場合、デーモン化されたsidekiqプロセスを実行します。

この男をcronジョブなどに引き込むことができます。しかし、あなたの仕事が絶えず失敗しているなら、あなたは間違いなくその理由を理解したくなるでしょう。

編集:cronから展開するパスを追加しました。

5
Jonathan Reyes
  1. 次のコマンドを入力します。ps -ef | grep sidekiqこれは、process_idと、バックグラウンドで実行中のsidekiqプロセスのその他の詳細を提供します。
  2. Process_idをコピーし、次のコマンドを使用します。kill process_id
  3. 次のコマンドを使用して、-dオプションでsidekiqをバックグラウンドで再度開始します。bundle exec sidekiq -d -L log/sidekiq.log =
1
user3133204