Sidekiq gemを使用して、バックグラウンドでAPI呼び出しを実行しています。私は次のようなデーモンプロセスでsidekiqを実行しました:
bundle exec sidekiq -d
メソッドにいくつか変更を加えたので、sidekiqを再起動します。私は以下のコマンドを使用してsidekiqを殺そうとしました:
kill -9 process_id
しかし、それは機能していません。 sidekiqプロセスを再起動するコマンドを知りたい。何かアイデアがあれば、私と共有してください。
以下のコマンドも試しました:
sidekiqctl stop /path/to/pid file/pids/sidekiq.pid
開始:
$ 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が終了するまで待機する秒数です。
デーモンを実行し続けるには、間違いなく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から展開するパスを追加しました。