私のプロジェクトの1つで、私は Sidekiq を使用しています
Sidekiqが実行されているかどうかを確認するのに役立つ組み込みのSidekiqコンソールメソッド/メソッドはありますか?.
私の要件は、Sidekiqが実行されていない場合にエラーが発生する事前チェック条件のようなものです。
私はgrepのように使ってみました
'ps -ef | grep sidekiq'
しかし、それは私の目的を解決していません。
私が探している方法は次のようなものでなければなりません:
Sidekiq.is_running?
前もって感謝します。
私も試しました
Sidekiqが実行されていません
1.9.3p392 :021 > system 'ps aux | grep sidekiq'
ankitgupta 6683 0.0 0.0 2432768 600 s001 R+ 11:47AM 0:00.00 grep sidekiq
ankitgupta 6681 0.0 0.0 2433432 916 s001 S+ 11:47AM 0:00.01 sh -c ps aux | grep sidekiq
=> true
Sidekiqが実行されています
1.9.3p392 :022 > system 'ps aux | grep sidekiq'
ankitgupta 6725 0.0 0.0 2432768 600 s001 S+ 11:57AM 0:00.00 grep sidekiq
ankitgupta 6723 0.0 0.0 2433432 916 s001 S+ 11:57AM 0:00.00 sh -c ps aux | grep sidekiq
ankitgupta 6707 0.0 1.3 3207416 111608 s002 S+ 11:56AM 0:07.46 sidekiq 2.11.2 project_name [0 of 25 busy]
=> true
常にtrueを返します。実行時にプロセスをキャッチしたい
ちょっとしたトリック:
ps aux | grep '[s]idekiq'
うまくいくことを願っています
理想的には、Ruby自体から直接実行できます。これをいくつかのRakeタスクまたはスタンドアロンスクリプトに入れます(Sidekiq接続の詳細を指定することを忘れないでください)
ps = Sidekiq::ProcessSet.new
ps.size # => 2
ps.each do |process|
p process['busy'] # => 3
p process['hostname'] # => 'myhost.local'
p process['pid'] # => 16131
end
ps.each(&:quiet!) # equivalent to the USR1 signal
ps.each(&:stop!) # equivalent to the TERM signal