2013-06-14 6 views
8

Gibt es eine einfache Möglichkeit, alle Sidekiq (Warteschlangen, Wiederholungen, Zeitpläne, etc.) für einen bestimmten Job zu durchsuchen?Der beste Weg, um einen Job überall in Sidekiq zu finden

Derzeit mache ich das:

if !Sidekiq::Queue.new("feeds").find {|j| j.args[0] == feed.id && j.args[1] == true } 
    if !Sidekiq::RetrySet.new.find {|j| j.queue == 'feeds' && j.args[0] == feed.id && j.args[1] == true } 
    if !Sidekiq::ScheduledSet.new.find {|j| j.queue == 'feeds' && j.args[0] == feed.id && j.args[1] == true } 
     feed.sync 
    end 
    end 
end 

Aber da, wie lange Schlangen bekommen, gibt es eine Chance, die Arbeit zwischen den Sätzen während der Iteration bewegen konnte und verpasst bekommen.

Antwort

6

Scheint so, als ob du den Status deines Jobs zu einem bestimmten Zeitpunkt wissen möchtest, nachdem du ihn erstellt hast. Außerdem behältst du seine ID. Es gibt ein paar Plugins genau dafür haben sie eine ähnliche Funktionalität und nahezu den gleichen Namen:

Sidekiq::Status - ich bin der Autor dieses, etwas minimalistisch

SidekiqStatus - bietet wesentlich mehr Funktionen