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?