2013-04-05 4 views

Antwort

21

Sie können Redis info von Sidekiq zur Verfügung gestellt:

redis_info = Sidekiq.redis { |conn| conn.info } 
redis_info['connected_clients'] # => "16" 

es dauerte von Sidekiq's Sinatra status app.

+5

Wenn es keine redis Verbindung oder Server zur Verfügung, die 'conn.info' würde Raise eine Ausnahme 'Redis :: CannotConnectError' –

4

Ich mache diese Methode zu Rails mit der obigen Antwort, zurück true wenn verbunden und false wenn nicht.

8

Es klingt, als ob Sie wissen möchten, ob ein Sidekiq-Prozess läuft, um Jobs zu einem bestimmten Zeitpunkt zu verarbeiten. Mit Sidekiq 3.0 können Sie dies tun:

require 'sidekiq/api' 

ps = Sidekiq::ProcessSet.new 
if ps.size > 0 
    MyWorker.perform_async(1,2,3) 
else 
    MyWorker.new.perform(1,2,3) 
end 

Sidekiq :: ProcessSet gibt Ihnen fast Echtzeit-Informationen über alle laufenden Prozesse Sidekiq (alle 5 Sekunden aktualisiert).

1
begin 
    MrWorker.perform_async('do_work', user.id) 
rescue Redis::CannotConnectError => e 
    MrWorker.new.perform('do_work', user.id) 
end 
2

Abspringen @ overallduka Antwort für diejenigen, die okcomputer Juwel verwenden, ist dies die individuelle Kontrolle i ein:

class SidekiqCheck < OkComputer::Check 
    def check 
    if sidekiq_accessible? 
     mark_message "ok" 
    else 
     mark_failure 
    end 
    end 

    private 
    def sidekiq_accessible? 
    begin 
     Sidekiq.redis { |conn| conn.info } 
    rescue Redis::CannotConnectError 
    end.present? 
    end 
end 

OkComputer::Registry.register "sidekiq", SidekiqCheck.new 
Verwandte Themen