Was ist node-cron?
node-cron ist eine leichtgewichtige Bibliothek für Node.js, die es ermöglicht, JavaScript-Funktionen nach einem Zeitplan auszuführen, indem die Syntax von cron-Ausdrücken verwendet wird. Sie eignet sich ideal für die Automatisierung von Routineaufgaben: Versenden von E-Mail-Benachrichtigungen, Bereinigen der Datenbank, Parsen von Webseiten oder Erstellen von Berichten.
Wozu braucht man einen Aufgabenplaner?
In der Webentwicklung ist es oft erforderlich, Code nicht sofort, sondern in bestimmten Intervallen auszuführen. Das manuelle Starten von Skripten mit setInterval() oder setTimeout() ist für komplexe Zeitpläne (z. B. "jeden zweiten Dienstag im Monat um 15:00 Uhr") unpraktisch. node-cron löst dieses Problem, indem es eine flexible und lesbare Möglichkeit zur Zeitangabe bietet.
Installation
Installieren Sie die Bibliothek über npm:
npm install node-cronOder verwenden Sie yarn:
yarn add node-cronGrundlegende Funktionen
- cron.schedule(expression, callback) — startet eine Funktion nach einem Zeitplan.
- cron.validate(expression) — überprüft die Korrektheit eines cron-Ausdrucks.
- task.stop() — stoppt eine Aufgabe.
- task.start() — setzt die Ausführung einer gestoppten Aufgabe fort.
- Unterstützung für Sekunden (zusätzliches Feld am Anfang des Ausdrucks).
Codebeispiel in JavaScript (Node.js)
Betrachten wir ein einfaches Beispiel: Starten einer Aufgabe jede Minute, die die aktuelle Uhrzeit in der Konsole ausgibt.
const cron = require('node-cron');
// Aufgabe wird jede Minute ausgeführtconst task = cron.schedule('* * * * *', () => { console.log('Aufgabe gestartet:', new Date().toLocaleTimeString());});
// Aufgabe startentask.start();
// Aufgabe nach 5 Minuten stoppensetTimeout(() => { task.stop(); console.log('Aufgabe gestoppt');}, 300000);Erklärung des cron-Ausdrucks: '* * * * *' — Minute, Stunde, Tag des Monats, Monat, Wochentag. Der Stern bedeutet "jeder". Zum Beispiel bedeutet '0 9 * * 1-5' — jeder Wochentag um 9:00 Uhr.
Beispiel mit Validierung:
const cron = require('node-cron');
const expression = '30 4 * * 0'; // jeden Sonntag um 4:30 Uhr morgensif (cron.validate(expression)) { cron.schedule(expression, () => { console.log('Sonntägliche Datenbereinigung...'); });} else { console.error('Ungültiger cron-Ausdruck');}Wann sollte man node-cron verwenden?
- Automatisierung von Backups: Tägliches Erstellen von Datenbanksicherungen.
- Versenden von Newslettern: Täglicher Versand eines Digests an Abonnenten.
- Monitoring: Überprüfung der Verfügbarkeit externer APIs alle 5 Minuten.
- Cache-Bereinigung: Löschen veralteter Daten aus Redis oder dem Dateisystem.
- Daten-Parsing: Zeitgesteuertes Laden von Wechselkursen oder Nachrichten.
Die Bibliothek eignet sich ideal für kleine und mittlere Projekte, bei denen kein vollwertiger Aufgabenorchestrator wie Bull oder Agenda benötigt wird. Wenn Ihre Anwendung auf einem einzelnen Server läuft und ein einfaches cron-ähnliches Verhalten erfordert, ist node-cron eine ausgezeichnete Wahl.