2017-03-31 1 views
1

Ich habe eine Rails-Anwendung, die rufus-scheduler verwendet, um einige ihrer Aufgaben zu planen. Der Scheduler wird in der after_fork eines Unicorn-Skripts initialisiert, das die Rails-Anwendung initiiert (Reference: https://gist.github.com/jkraemer/3851917).So überprüfen Sie, ob rufus-scheduler bereits für meine Rails-Anwendung ausgeführt wird

Kürzlich stieß ich auf ein Szenario, in dem der Einhorn-Scheduler-Thread getötet wurde, während der Unicorn-Prozess, der ihn hostet, noch aktiv war. Dies führte dazu, dass der Scheduler für eine beträchtliche Zeit ohne vorherige Ankündigung stillstand.

Ich möchte ein Alarm- und Überwachungssystem einrichten, um solche Szenarien zu behandeln, die in der Lage sein sollten: 1. Eine Warnung zu werfen, wenn der Scheduler-Thread abgebrochen wird/abgebrochen wird. 2. Starten Sie den Scheduler neu, wenn der Rails-Prozess ausgeführt wird.

Was wäre eine geeignete Möglichkeit, den Laufstatus des Schedulers zu kennen, etwa durch eine Crontask und den automatischen Neustart?

Antwort

1

Wenn Sie eine Cron-Aufgabe zum Betrachten von Rufus-Scheduler mitbringen, warum lassen Sie nicht einfach rufus-scheduler fallen und verwenden Whenever für die gesamte Planung? Sie haben somit eine 100% ige Crond-Lösung.

Eine andere Alternative, verwenden Sie Foreman zu verwalten a) Ihre Rails-Anwendung b) ein separater Prozess Hosting Ihrer Rufus-Scheduler-Zeitpläne (es könnte eine "nur Zeitplan" Version Ihrer Rails-Anwendung sein) (hier ist ein schönes Beispiel in einem blog post). Es gibt auch God.

Wenn Sie Uhrwerk betrachten, ein Juwel, das von Rufus-Scheduler inspiriert wurde, sie detail so eine Anwendung/mehrere Prozesse Szenarien.

Dann können Sie sich die verschiedenen Tools anschauen, um Ihre Logs zu sehen und Sie im Fehlerfall zu warnen.

Update:

Vielleicht könnte dieser Kern helfen: https://gist.github.com/jmettraux/5f716c8568f6ab7bb016a4bc11528bc2

+1

Vielen Dank für die ausführliche Liste der Vorschläge. Probiere sie aus. Ich konnte keine 100% -Cron-Planung verwenden, da ich bestimmte Aufgaben unter der 1-Minuten-Frequenz planen musste. – elixir

+0

Wie kann ich zur Überwachung über God Script von außerhalb der Anwendung auf die Scheduler-Instanz zugreifen? – elixir

+0

Sie müssen diesen Zugriff selbst implementieren. – jmettraux

Verwandte Themen