2016-07-14 4 views
0

Ich habe eine verzögerte Klasse, die eine Anforderung an einen externen Webdienst ausführt, die ich versuchen möchte, wenn die Anforderung fehlgeschlagen ist.Sidekiq verzögerte Klasse wird nicht fehlschlagen, wenn Fehler ausgelöst wird

class MyModel 

    def self.does_request(record_name) 
    response = self.post(record_name) 
    if response.status == 404 
     raise StandardError 
    end 
    end 

    def self.post(record_name) 
    # HTTP request which returns the response 
    end 

end 

ich die Methode als MyModel.delay.does_request('new_value')

Leider Aufruf wird Sidekiq nicht die Fehlerbehandlung Ich hebe, markiert sie einfach den Job als auf der Web-Oberfläche verarbeitet. Ich habe versucht, den Fehler auf eine separate Worker perform Methode zu erhöhen und funktioniert gut, aber ich vermeide es, einen Arbeiter speziell dafür zu erstellen, da ich mehrere Anfragen zu dieser Klasse habe und einen Worker für jeden klingt ein bisschen zu viel.

Wie kann ich die Methode wiederholen, ohne dafür einen Worker zu verwenden?

Antwort

0

Nun, nach dem Neustart meines sidekiq processes funktionierte es, anscheinend nur tun reload! auf meiner Rails-Konsole ist nicht genug.