Frage

Ich bin mit Delayed Job Hintergrund Arbeit zu verwalten.
Allerdings habe ich einige Aufgaben, die in regelmäßigen Abständen ausgeführt werden müssen. Jede Stunde, jeden Tag oder jede Woche zum Beispiel.

Für den Moment, als ich die Aufgabe ausführen, erstelle ich einen neuen an einem Tag / Woche / Monat ausgeführt werden.

Allerdings weiß ich nicht wirklich, wie es. Wenn aus irgendeinem Grund, wird die Aufgabe nicht vollständig ausgeführt, haben wir nicht die nächste erstellen und wir könnten die Ausführung der Aufgabe verlieren.

Wie schaffen Sie sich, diese Art von Dingen (mit verzögerter Job) in Ihren Rails-Anwendungen sicher seine Liste Ihrer regelmäßigen Aufgaben bleibt richtig?

War es hilfreich?

Lösung

Wenn Sie Zugriff auf Cron haben, empfehle ich Jedes Mal, wenn

http://github.com/javan/whenever

Sie legen fest, was Sie ausführen möchten, und bei welcher Frequenz in totem einfachem Ruby, und wann immer liefern Aufgaben Rake diese in eine crontab zu konvertieren und zu Ihrem System crontab zu aktualisieren.

Wenn Sie keinen Zugriff auf häufig cron haben (wie ich dies nicht tun, da wir auf Heroku sind), dann DJ ist der Weg zu gehen.

Sie haben ein paar Optionen.

  1. Tu, was du tust. DJ wird jede Aufgabe, eine bestimmte Anzahl von Malen wiederholen, so dass Sie eine gewisse Nachsicht dort

  2. Sie den Code setzen, die den nächsten DJ Job in einem gewährleisten Block erstellt, um sicherzustellen, dass es kommt noch nach einer Ausnahme oder anderes schlechtes Ereignis erstellt

  3. einen anderen DJ erstellen, die regelmäßig läuft, überprüft die entsprechenden DJs existieren, um sicherzustellen, und schafft sie, wenn sie nicht tun. Natürlich ist dies nur als fehleranfällig als die anderen Optionen, da der Monitor und der tatsächliche DJ in der gleichen env beide laufen, aber es ist etwas.

Andere Tipps

Gibt es einen besonderen Grund, warum Sie nicht cron für diese Art von Dingen verwenden würde? Oder vielleicht etwas mehr rubyish wie rufus-Scheduler , die recht ist einfach zu bedienen und sehr zuverlässig.

Wenn Sie keine Warteschlangen benötigen, sind diese Werkzeuge ein Weg zu gehen, denke ich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top