Heim >Web-Frontend >Front-End-Fragen und Antworten >Geplante Aufgaben verschwinden nach dem Neustart von nodejs

Geplante Aufgaben verschwinden nach dem Neustart von nodejs

WBOY
WBOYOriginal
2023-05-28 10:39:07820Durchsuche

Node.js ist eine weit verbreitete serverseitige Entwicklungssprache und viele Anwendungen basieren auf den geplanten Aufgaben von Node.js. Bei der Verwendung von Node.js tritt jedoch manchmal das Problem auf, dass geplante Aufgaben nach dem Neustart verschwinden. Dieses Problem beeinträchtigt bis zu einem gewissen Grad die Stabilität und den normalen Betrieb der Anwendung und muss daher rechtzeitig behoben werden.

In diesem Artikel stellen wir Schritt für Schritt das Problem des Verschwindens geplanter Aufgaben in Node.js und seine Lösung vor.

1. Problembeschreibung

In Node.js-Anwendungen verwenden wir normalerweise setTimeout oder setInterval, um geplante Aufgaben auszuführen. Mit diesen Funktionen können wir ein Zeitintervall festlegen und dann in diesem Intervall einen Code ausführen, der so lange wiederholt wird, bis er nicht mehr benötigt wird, um anzuhalten.

Als Node.js jedoch neu gestartet wurde, stellten wir fest, dass diese geplanten Aufgaben verschwanden und manuell neu gestartet werden mussten. Dies führt dazu, dass wir den Betriebsstatus der Anwendung ständig überwachen, was viel Zeit und Energie kostet.

2. Ursache des Problems

Wenn wir in Node.js eine geplante Aufgabe starten, wird diese einer Ereigniswarteschlange hinzugefügt. Wenn die Ereignisschleife diese Aufgabe erreicht, führt sie die entsprechende Aufgabe entsprechend dem Zeitintervall aus wir legen fest. Wenn wir jedoch Node.js neu starten, wird die gesamte Ereigniswarteschlange gelöscht, sodass alle geplanten Aufgaben verschwinden.

3. Lösung

Um dieses Problem zu lösen, können wir pm2, das Prozessverwaltungstool von Node.js, verwenden. pm2 kann uns dabei helfen, den Node.js-Prozess zu verwalten und die Stabilität und Hochverfügbarkeit der Anwendung aufrechtzuerhalten.

Die spezifische Lösung lautet wie folgt:

Schritt 1: PM2 installieren

Npm verwenden, um pm2 zu installieren:

npm install -g pm2

Schritt 2: Node.js-Anwendung starten

PM2 verwenden, um die Node.js-Anwendung zu starten:

pm2 start app.js

Die App hier ist unsere Anwendungseintragsdatei.

Schritt 3: Einrichten der geplanten Aufgabe

Verwenden Sie den Befehl pm2, um die geplante Aufgabe einzurichten:

pm2 cron [interval] [command] [-d args]

Unter anderem ist „Intervall“ das Zeitintervall der geplanten Aufgabe in Sekunden oder „Befehl“ ist der Befehl „we“. ausführen möchten; args ist der Befehl, den wir ausführen möchten. An den Befehl übergebene Parameter.

Wenn wir beispielsweise alle 30 Sekunden den Befehl nodeprocess.js ausführen möchten, können wir den folgenden Befehl verwenden:

pm2 cron '*/30 * * * * *' 'node process.js'

Hinweis: Wenn wir pm2 zum Einrichten geplanter Aufgaben verwenden, müssen wir die ausführbare Cron-Datei im festlegen Pfad der PM2-Konfigurationsdatei, damit PM2 weiß, welche Version von Node.js ausgeführt werden soll.

Schritt 4: PM2-Konfigurationsdatei speichern

Speichern Sie die PM2-Konfigurationsdatei mit dem folgenden Befehl:

pm2 save

Dadurch wird unsere Konfigurationsdatei dauerhaft gespeichert und beim nächsten Start der App automatisch geladen.

Durch die oben genannten Schritte können wir das Problem lösen, dass geplante Aufgaben nach dem Neustart von Node.js verschwinden.

Zusammenfassung

Die geplanten Aufgaben von Node.js sind ein wichtiger Teil der Anwendung, daher müssen wir ihre Stabilität und Zuverlässigkeit sicherstellen. Mit dem Prozessmanagement-Tool pm2 können wir geplante Aufgaben einfach einrichten und verwalten, um den normalen Betrieb und die hohe Verfügbarkeit von Anwendungen aufrechtzuerhalten.

Das obige ist der detaillierte Inhalt vonGeplante Aufgaben verschwinden nach dem Neustart von nodejs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn