it-swarm.com.de

Wie man Sidekiq findet, läuft oder nicht

In einem meiner Projekte verwende ich Sidekiq

Gibt es eine eingebaute Sidekiq-Konsolenmethode, mit der ich feststellen kann, ob sidekiq ausgeführt wird oder nicht?.

Meine Anforderung ist eine Art Pre-Check-Bedingung, bei der ich einen Fehler auslöse, wenn Sidekiq nicht läuft.

Ich habe versucht, das grep-like zu verwenden

'ps -ef | grep sidekiq' 

aber es löst nicht meinen Zweck.

Die Methode, nach der ich suche, sollte ungefähr so ​​aussehen:

Sidekiq.is_running? 

Danke im Voraus.

Ich habe es auch versucht

Sidekiq läuft nicht

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 läuft

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 

Es wird immer true zurückgegeben. Ich möchte den Prozess abfangen, wenn er ausgeführt wird

21
AnkitG

Ein kleiner Trick:

ps aux | grep '[s]idekiq'

Hoffe, es funktioniert

29
dan

Idealerweise können Sie dies direkt von Ruby aus tun. Fügen Sie dies in eine Rake-Task oder ein eigenständiges Skript ein (vergessen Sie nicht, die Sidekiq-Verbindungsdetails anzugeben).

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

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

3
neolancer

In this question erfahren Sie, wie Sie die ps-Ausgabe mit grep filtern und gleichzeitig den Befehl grep aus der Ausgabe entfernen.

1
Pete TerMaat

Ich verstehe, probiere das aus:

module Process
  class << self
    def is_running?(pid)
      begin
        Process.kill(0, pid)
        true
      rescue Errno::ESRCH
        false
      end
    end
  end
end

1.9.3p392 :001 > puts `ps aux | grep -i [s]idekiq`

Sie erhalten die folgende PID: 12247, und Sie können überprüfen, ob sie ausgeführt wird:

Process.is_running?(12247) // true | false
1
Said Kaldybaev

Sie können Ihrem config/routes.rb die folgenden Zeilen hinzufügen

require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'

Starten Sie Ihren Server, öffnen Sie einen Browser und überprüfen Sie Ihre Prozesse und Jobs

Sie finden es in Sidekiq Wiki

0
Imagination