Neuplanung von Cron-Jobs in nodejs beim Server-Neustart

stimmen
41

Ich habe eine node js-Anwendung, in der ein Benutzer 4-5 verschiedene Cron-Jobs planen kann. Ein Benutzer wählt ein Startdatum, Enddatum, eine Startzeit und eine Endzeit aus, und entsprechend werden die Cron-Funktionen geplant und einige Kampagnen generiert, um mit Leads (oder anderen Benutzern) in Verbindung zu treten. Ich verwende das npm-Paket node-schedule, um die gewünschte Cron-Job-Ausführung zu erreichen, aber das Problem tritt auf, wenn meine Webanwendung zwischendurch abstürzt

Gemäß der offiziellen Dokumentation von node-schedule,

Beachten Sie, dass Node Schedule für In-Prozess-Scheduling ausgelegt ist, d.h. geplante Jobs werden nur so lange ausgeführt, wie Ihr Skript läuft, und der Schedule verschwindet, wenn die Ausführung abgeschlossen ist.

Die Lösung, die ich zur Lösung dieses Problems finden kann, ist der Aufruf der Cron-Funktionen über die Datei server.js, die bei jeder Ausführung des Server-Skripts neu gestartet wird. Einige der folgenden Probleme kann ich jedoch nicht lösen:

  1. Ein Scheduler ist eine individuelle Funktion, nicht kampagnen-spezifisch. Woher weiß die Anwendung also, welche Cron-Funktion zu starten ist, wenn sie nicht abgeschlossen wurde?
  2. Ein Scheduler ist eine einzelne Funktion, die jedes Mal aufgerufen wird, sobald der Server neu gestartet wird. Wenn 6 Instanzen eines Servers erstellt werden, wird er 6 Mal aufgerufen

Angenommen, mein Terminplaner soll zwischen dem 28. Mai 11:00 Uhr und dem 31. Mai 12:00 Uhr morgens ausgeführt werden. Der Scheduler beginnt seine Arbeit und einige der Kampagnen werden dazwischen ausgeführt. Wenn mein Server am 30. Mai ausfällt, wie kann ich von der verbleibenden Datumszeit und den verbleibenden Kampagnen abholen und die Ausführung von dort aus abschließen?

Ich mache mir also Gedanken darüber, wie ich die Cron-Job-Funktionen für die Kampagnen planen oder handhaben soll? Wenn einer der Cron-Jobs der Kampagne zwischendurch abstürzt, wenn der Server gestoppt wird, wie sollte ich dann in der Lage sein, diese Cron-Funktion von der Zeit oder dem Datum an, das davon übrig geblieben ist, neu einzuplanen oder auszuführen?

Ich habe nicht viel Erfahrung mit Cron-Jobs, in der Hoffnung auf einige praktische Lösungen.

Veröffentlicht am 28/05/2020 um 19:49
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more