In diesem Artikel erfahren Sie, wie Sie geplante Aufgaben in Node implementieren. Ich hoffe, er wird Ihnen hilfreich sein!
Derzeit sind wir auf eine solche Nachfrage gestoßen. Jeder Benutzer kann die Zeitkonfiguration der geplanten Aufgabe vom Benutzer konfigurieren und kann jederzeit geändert werden, anstatt die Zeit auf dem herkömmlichen Server festzulegen Führen Sie die geplante Aufgabe aus. [Empfohlenes Lernen: „nodejs Tutorial“]
Wenn der geplante Aufgabenzyklus bekannt ist, können geplante Linux Crontab-Aufgaben implementiert werden. Es gibt bereits relativ ausgereifte Lösungen in Node. Im Folgenden werde ich die Lösung für geplante Node-Aufgaben vorstellen, die ich über mich selbst gelernt habe.
egg ist Alibabas Node-Anwendungsframework auf Unternehmensebene. Es bietet eine Reihe von Mechanismen für Entwickler, um geplante Aufgaben elegant zu schreiben: https://eggjs.org/zh-cn/basics/schedule.html Die spezifische Verwendung wird hier nicht näher erläutert, die Konfigurationsverwendung wird jedoch kurz erläutert.
1. Statische geplante Aufgaben, also geplante Zyklen, verfügen über eine fest codierte Verarbeitungslogik.
2. Geplante Aufgaben dynamisch konfigurieren, was relativ flexibler ist. Entwickler können den geplanten Aufgabenzyklus über Konfigurationsdateien steuern.
3. Geplante Aufgaben manuell über Code auslösen. Wir können anhand einer bestimmten Logik bestimmen, ob geplante Aufgaben ausgelöst werden sollen.
Aufgrund der oben genannten drei Punkte können die von Egg bereitgestellten geplanten Aufgaben unsere Anforderungen an die Konfiguration des Zeitintervalls durch Benutzer nicht erfüllen. Daher können wir nur nach anderen Lösungen suchen, indem wir die Daten abfragen. Wir haben festgestellt, dass die Node-Schedule-Bibliothek dies auch tut Bietet die Funktion geplanter Aufgaben.
Nachdem er die Dokumentation von node-schedule https://www.npmjs.com/package/node-schedule durchgesehen hat, ist seine Verwendung wie folgt:
const schedule = require('node-schedule'); const job = schedule.scheduleJob('42 * * * *', function(){ console.log('The answer to life, the universe, and everything!'); });
Ja, er unterstützt seit Defining Der Timing-Zyklus kann unseren Bedürfnissen entsprechen und unsere Wahl sein.
Als ich weiterhin die Nutzungsartikel anderer Entwickler durchstöberte, fand ich eine Aufzeichnung verwandter Probleme mit Node-Schedule. Kurz gesagt, der Timer wurde zur geplanten Zeit ausgeführt. 2 mal. Für spezifische Fragen schauen Sie sich bitte den Originaltext an: https://cnodejs.org/topic/5b58414b8d66b90b2b7384a7. Dies ist ein Problem mit geringer Wahrscheinlichkeit. Aufgrund unserer Anforderungen wird der Timer nicht ausgeführt, was keinen Einfluss auf unsere Ergebnisse hat. Daher ist dies kein Hindernis, das uns daran hindert, ihn zu verwenden Auf Fehler testen.
Abschließend finden Sie hier eine Zusammenfassung der geplanten Aufgabenlösungen unseres eigenen Projekts. Schüler, die nicht interessiert sind, können diese überspringen.
Unser Backend verwendet das Egg-Framework, daher besteht unsere endgültige Lösung darin, dem Agentenprozess einen Node-Schedule-Timer hinzuzufügen. Der Timer wird im Agentenprozess synchron ausgeführt. Derzeit ist die Anzahl unserer Benutzer nicht groß Ich denke vorerst nur an diese Lösung, und das Backend kann in Zukunft verteilt bereitgestellt werden, nachdem das Volumen erhöht wurde.
Dies wird ein Problem sein, und wenn das Volumen groß ist, wird es auch ein Problem sein, es in einem einzelnen Prozess auszuführen, und Egg selbst empfiehlt nicht, zu viele geschäftsbezogene Dinge im Agentenprozess zu erledigen. Ein weiterer wichtiger Punkt ist, dass der Agent ein Hilfsprozess ist. Wenn ein nicht erfasster Fehler auftritt, wird der Agent nicht beendet und neu gestartet. Daher muss die Fehlertoleranzverarbeitung ordnungsgemäß durchgeführt werden.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmiervideos! !
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion darüber, wie geplante Aufgaben in Nodejs ausgeführt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!