Ich verwende Rails 4.2 und verzögertes_job 4.0.6 als mein ActiveJob-Backend.In Rails 4.2 überprüfen, ob ein Job bereits eingereiht ist
Ich habe einen Job, den ich nur einmal in der Warteschlange zulassen möchte. Der betreffende Job benötigt eine Minute zum Ausführen. Es wird durch einen Callback für ein Modell in die Warteschlange eingereiht. Der Rückruf wird viel häufiger ausgelöst, als der Job abgeschlossen werden kann. Der Job muss nicht mehr als einmal in der Warteschlange stehen.
Hier ist ein Pseudocode für das, was ich erreichen möchte.
Wenn eine Instanz des Jobs ausgeführt wird, wenn er erneut aufgerufen wird, sollte er für die Zukunft in die Warteschlange eingereiht werden. Ich suche nach einer Möglichkeit, den Job für einen zukünftigen Lauf maximal 1 Mal in die Warteschlange zu stellen.
Ich nehme an, dass die Antwort speziell für delayed_job sein muss, aber wenn sie auf ActiveJob verallgemeinert werden kann, wäre das sogar noch besser.
Können Sie redis verwenden? Wie in, hast du es auf deinem Stack installiert? –
Ich muss bei diesem Projekt bei Postgres bleiben. –
Sie werden nicht aufgefordert, es zu ersetzen, aber wenn Sie redis zusammen mit Postgres verwenden können, kann es eine einfache Lösung geben. –