TypeScript-Aufgabenplaner: Automatisierung mit node-schedule
In der modernen Webentwicklung besteht häufig die Notwendigkeit, Code nach einem Zeitplan auszuführen: Benachrichtigungen senden, Cache leeren, Berichte generieren oder Daten synchronisieren. Für TypeScript-Projekte ist node-schedule eine der leistungsstärksten und flexibelsten Bibliotheken. Es ist ein Aufgabenplaner, der sowohl einmalige als auch wiederkehrende Ausführungen mit Cron-Ausdrücken, Daten oder benutzerdefinierten Regeln ermöglicht.
Installation und Einrichtung
Führen Sie zur Installation der Bibliothek den folgenden Befehl aus:
npm install node-schedulenpm install @types/node-schedule --save-devNach der Installation können Sie das Modul in Ihre TypeScript-Datei importieren:
import * as schedule from 'node-schedule';Hauptfunktionen von node-schedule
- Planung mit Cron-Ausdrücken — Unterstützung klassischer 6-Feld-Masken (Sekunden, Minuten, Stunden, Tag des Monats, Monat, Tag der Woche).
- Einmalige Aufgaben — Ausführung von Code zu einem bestimmten Zeitpunkt.
- Wiederkehrende Regeln — Erstellung benutzerdefinierter Intervalle mit dem Objekt
RecurrenceRule. - Aufgaben abbrechen — Möglichkeit, die Ausführung einer geplanten Aufgabe zu stoppen.
- Unterstützung von Zeitzonen — präzise Ausführung in der angegebenen Zeitzone.
Beispiel 1: Einfacher Cron-Planer
Erstellen wir eine Aufgabe, die jede Minute ausgeführt wird:
import * as schedule from 'node-schedule';
const job = schedule.scheduleJob('*/1 * * * *', () => { console.log('Aufgabe ausgeführt:', new Date().toLocaleString());});
// Nach 5 Minuten brechen wir die Aufgabe absetTimeout(() => { job.cancel(); console.log('Aufgabe abgebrochen');}, 5 * 60 * 1000);In diesem Beispiel bedeutet der Cron-Ausdruck '*/1 * * * *' „jede Minute“. Beachten Sie die Reihenfolge der Felder: Sekunden, Minuten, Stunden, Tag des Monats, Monat, Tag der Woche.
Beispiel 2: Aufgabe mit einem bestimmten Datum
Sie können die Ausführung zu einem bestimmten Zeitpunkt in der Zukunft planen:
import * as schedule from 'node-schedule';
const date = new Date(2025, 11, 31, 23, 59, 0); // 31. Dezember 2025, 23:59
const job = schedule.scheduleJob(date, () => { console.log('Neujahr ist da!');});
// Überprüfen, ob die Aufgabe geplant istconsole.log('Aufgabe aktiv:', job !== null);Beispiel 3: Wiederkehrende Regel (RecurrenceRule)
Wenn Cron-Ausdrücke kompliziert erscheinen, verwenden Sie das Objekt RecurrenceRule, um verständliche Regeln zu erstellen:
import * as schedule from 'node-schedule';
const rule = new schedule.RecurrenceRule();rule.hour = 9;rule.minute = 30;rule.dayOfWeek = [1, 3, 5]; // Montag, Mittwoch, Freitag
const job = schedule.scheduleJob(rule, () => { console.log('Morgendliches Meeting um 9:30 an Werktagen (Mo, Mi, Fr)');});
// Zum Abbrechen nach einem Monat:setTimeout(() => job.cancel(), 30 * 24 * 60 * 60 * 1000);Beispiel 4: Aufgabe mit Zeitzone
Wenn Ihre Anwendung in verschiedenen Zeitzonen arbeitet, geben Sie die Zeitzone an:
import * as schedule from 'node-schedule';
const job = schedule.scheduleJob( { hour: 8, minute: 0, tz: 'Europe/Moscow' }, () => { console.log('Moskauer Morgen: 8:00'); });Fehlerbehandlung und Aufgabenabbruch
Implementieren Sie immer eine Fehlerbehandlung innerhalb des Callbacks, um einen Absturz der Anwendung zu vermeiden:
import * as schedule from 'node-schedule';
const job = schedule.scheduleJob('*/5 * * * *', async () => { try { // Ihr asynchroner Code const data = await fetchDataFromAPI(); console.log('Daten erhalten:', data); } catch (error) { console.error('Fehler im Planer:', Auch in der Bibliothek
Arbeiten mit CSV in Rust: Die csv-Bibliothek und praktische Beispiele
Datenvalidierung in Java: Überblick über Bibliotheken und Werkzeuge
JSON-Verarbeitung in TypeScript: Typisierung, Validierung und Parsing
Caching in C++: Die Bibliothek Cache++
Aufgabenplaner in Rust: Erstellung eines zuverlässigen Job Schedulers