Was ist node-schedule?
node-schedule ist eine flexible Bibliothek zur Aufgabenplanung (cron-ähnlich) in der Node.js-Umgebung. Sie ermöglicht die Ausführung von JavaScript/TypeScript-Funktionen nach einem Zeitplan unter Verwendung von cron-Syntax, Intervallen oder bestimmten Daten. Die Bibliothek eignet sich ideal für die Erstellung von Hintergrundaufgaben, periodischen Benachrichtigungen, Datenbereinigung und anderen automatisierten Prozessen.
Wozu braucht man node-schedule?
In Webanwendungen muss Code oft nicht auf Benutzeranfrage, sondern zeitgesteuert ausgeführt werden. Zum Beispiel: Versand täglicher Berichte, Archivierung von Logs, Überprüfung von Serverstatus. node-schedule bietet eine einfache und zuverlässige Möglichkeit, dies ohne komplexe Warteschlangensysteme zu realisieren. Im Gegensatz zu setInterval unterstützt es komplexe cron-Zeitpläne und berücksichtigt Zeitzonen.
Installation
Installieren Sie die Bibliothek über npm oder yarn:
npm install node-schedule# oderyarn add node-scheduleFür TypeScript installieren Sie zusätzlich die Typen:
npm install @types/node-schedule --save-devHauptfunktionen
- Cron-Zeitpläne: Unterstützung der standardmäßigen cron-Syntax (Minuten, Stunden, Tage, Monate).
- Aufgaben abbrechen: Möglichkeit, die geplante Ausführung abzubrechen.
- Einmalige Aufgaben: Ausführung zu einem bestimmten Datum.
- Wiederkehrende Aufgaben: Wiederholung in einem festen Intervall.
- Fehlerbehandlung: Integrierte Unterstützung für Callbacks bei Fehlern.
Codebeispiel in TypeScript
import * as schedule from 'node-schedule';
// Aufgabe: Jede Minuteconst job = schedule.scheduleJob('*/1 * * * *', () => { console.log('Aufgabe ausgeführt um:', new Date().toISOString());});
// Einmalige Aufgabe in 10 Sekundenconst date = new Date(Date.now() + 10000);schedule.scheduleJob(date, () => { console.log('Einmalige Aufgabe');});
// Aufgabe nach 30 Sekunden abbrechensetTimeout(() => { job.cancel(); console.log('Aufgabe abgebrochen');}, 30000);
// Aufgabe mit wiederkehrender Regelconst rule = new schedule.RecurrenceRule();rule.hour = 14;rule.minute = 30;schedule.scheduleJob(rule, () => { console.log('Aufgabe um 14:30 jeden Tag');});Wann verwenden
node-schedule eignet sich ideal für:
- Hintergrunddienstprogramme: Bereinigung temporärer Dateien, Backups.
- Benachrichtigungen: Zeitgesteuerter Versand von E-Mails oder Push-Benachrichtigungen.
- Überwachung: Periodische Überprüfung der Service-Gesundheit.
- Integrationen: Synchronisation mit externen APIs per cron.
Verwenden Sie node-schedule nicht für Aufgaben, die hohe Präzision (Millisekunden) oder verteilte Ausführung erfordern (hierfür eignen sich Warteschlangen wie Bull oder RabbitMQ besser).
Die Bibliothek ist leichtgewichtig, benötigt keine externen Abhängigkeiten und funktioniert hervorragend in Verbindung mit Express, NestJS oder reinem Node.js.
Auch in der Bibliothek
Elasticsearch-Client für TypeScript: @elastic/elasticsearch
CLI-Framework für Rust: clap
CLI-Frameworks für PHP: Erstellung von Konsolenanwendungen mit Symfony Console und Laravel Zero