Bibliothek node-schedule: Flexibler Aufgabenplaner in TypeScript
In der modernen Webentwicklung besteht häufig die Notwendigkeit, bestimmte Aktionen zu einer festgelegten Zeit oder nach einem Zeitplan auszuführen. Für das Node.js- und TypeScript-Ökosystem gibt es mehrere Lösungen, aber node-schedule zeichnet sich durch seine Flexibilität und Einfachheit aus. Diese Bibliothek ermöglicht es, sowohl einmalige Aufgaben zu einem genauen Datum als auch wiederkehrende Aufgaben mit Cron-Ausdrücken oder menschenlesbaren Intervallen zu erstellen.
Hauptfunktionen von node-schedule
- Präzise Ausführungszeit – Aufgabenstart zu einem bestimmten Zeitpunkt (Datum + Uhrzeit)
- Cron-Ausdrücke – klassische Syntax für periodische Aufgaben (jede Minute, jede Stunde usw.)
- Wiederkehrende Regeln – flexible Konfiguration von Wiederholungen mit dem Objekt
RecurrenceRule - Abbrechen und Anhalten – Verwaltung aktiver Aufgaben
- Unterstützung von Zeitzonen – Arbeit mit lokaler Zeit
Installation und Einbindung
Installieren Sie das Paket über npm, um zu beginnen:
npm install node-schedulenpm install @types/node-schedule --save-devImport in der TypeScript-Datei:
import * as schedule from 'node-schedule';Beispiel 1: Aufgabe zu einem genauen Datum
Erstellen wir eine Aufgabe, die am 31. Dezember 2024 um 23:59:59 ausgeführt wird:
const date = new Date(2024, 11, 31, 23, 59, 59);
const job = schedule.scheduleJob(date, () => { console.log('🎉 Frohes neues Jahr 2025!');});
// Aufgabe abbrechen (falls nötig)// job.cancel();Beispiel 2: Periodische Aufgabe mit Cron-Ausdruck
Aufgabenstart alle 5 Minuten:
const job = schedule.scheduleJob('*/5 * * * *', () => { console.log('Führe Aufgabe alle 5 Minuten aus');});Format des Cron-Ausdrucks: Sekunde Minute Stunde Tag_Monat Monat Wochentag. In node-schedule werden alle 6 Felder unterstützt (im Gegensatz zum klassischen Cron mit 5 Feldern).
Beispiel 3: Verwendung von RecurrenceRule
Erstellen wir eine Aufgabe, die jeden Dienstag und Donnerstag um 10:30 Uhr ausgeführt wird:
const rule = new schedule.RecurrenceRule();rule.dayOfWeek = [2, 4]; // Dienstag und Donnerstagrule.hour = 10;rule.minute = 30;
const job = schedule.scheduleJob(rule, () => { console.log('Sende wöchentlichen Bericht');});RecurrenceRule unterstützt die folgenden Felder:
year– Jahr oder Array von Jahrenmonth– Monat (0-11) oder Arraydate– Tag des Monats (1-31)dayOfWeek– Wochentag (0-6, wobei 0 = Sonntag)hour– Stunde (0-23)minute– Minute (0-59)second– Sekunde (0-59)
Beispiel 4: Kombinierte Regeln
Aufgabe, die am letzten Tag jedes Monats um 23:59 ausgeführt wird:
const rule = new schedule.RecurrenceRule();rule.month = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; // alle Monaterule.date = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // letzte Tage jedes Monatsrule.hour = 23;rule.minute = 59;rule.second = 59;
const job = schedule.scheduleJob(rule, () => { console.log('Ausführung am letzten Tag des Monats');});Verwaltung von Aufgaben
Die Bibliothek bietet Methoden zur vollständigen Kontrolle über Aufgaben:
// Aufgabe erstellenconst job = schedule.scheduleJob('*/10 * * * * *', () => { console.log('Alle 10 Sekunden');});
// Aufgabe abbrechenjob.cancel();
// Prüfen, ob die Aufgabe aktiv istconsole.log(job.pending()); // true oder false
// Alle Aufgaben abbrechenschedule.gracefulShutdow