web-dev-qa-db-ja.com

Sidekiqが実行されているかどうかを確認する方法

私のプロジェクトの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を返します。実行時にプロセスをキャッチしたい

24
AnkitG

ちょっとしたトリック:

ps aux | grep '[s]idekiq'

うまくいくことを願っています

34
dan

理想的には、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

https://github.com/mperham/sidekiq/wiki/API#processes から

7
neolancer