Aufgabenplaner für Node.js: node-schedule und node-cron

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Aufgabenplaner für Node.js: node-schedule und node-cron



In der modernen Webentwicklung besteht häufig die Notwendigkeit, bestimmte Aktionen zu einer festgelegten Zeit oder in regelmäßigen Abständen auszuführen. Zum Beispiel das Versenden von Berichten per E-Mail, die Bereinigung der Datenbank, das Parsen externer Ressourcen oder die Aktualisierung des Caches. In der Node.js-Umgebung werden hierfür Aufgabenplaner verwendet. Die beiden beliebtesten Werkzeuge sind node-schedule und node-cron. In diesem Artikel werden wir beide im Detail analysieren, Codebeispiele geben und Ihnen helfen, den passenden für Ihr Projekt auszuwählen.



Wozu braucht man einen Aufgabenplaner in Node.js?

Node.js ist eine Single-Thread-Umgebung mit einer ereignisgesteuerten Architektur. Die integrierten Funktionen setTimeout und setInterval ermöglichen die Ausführung von Code mit einer Verzögerung oder in regelmäßigen Abständen, sind jedoch für komplexe Szenarien nicht geeignet:

  • Keine Flexibilität bei der Konfiguration (z. B. „jeden zweiten Montag im Monat um 10:30 Uhr“).
  • Sie speichern den Zustand nach einem Neustart der Anwendung nicht.
  • Schwierigkeiten bei der Verwaltung (Abbrechen, Ändern des Zeitplans).

Planer lösen diese Probleme, indem sie eine einfache API zum Erstellen, Starten und Abbrechen von zeitgesteuerten Aufgaben bereitstellen.



Die Bibliothek node-schedule

node-schedule ist ein flexibler Planer, der auf einer cron-ähnlichen Syntax basiert, aber erweiterte Funktionen bietet. Er ermöglicht die Definition von sich wiederholenden Aufgaben mit einer Genauigkeit von einer Minute sowie einmaligen Aufgaben zu einem bestimmten Datum.



Installation

npm install node-schedule


Hauptfunktionen

  • Unterstützung von Cron-Ausdrücken (6 Felder: Sekunden, Minuten, Stunden, Tag des Monats, Monat, Wochentag).
  • Möglichkeit, eine einmalige Ausführung mit einem Date-Objekt festzulegen.
  • Wiederkehrende Regeln mit dem Objekt RecurrenceRule.
  • Methoden cancel() und cancelNext() zur Aufgabenverwaltung.


Beispiel 1: Aufgabe alle 5 Minuten ausführen

const schedule = require('node-schedule');

const job = schedule.scheduleJob('*/5 * * * *', function() { console.log('Aufgabe wird alle 5 Minuten ausgeführt:', new Date().toLocaleString());});

// Aufgabe nach 20 Minuten abbrechensetTimeout(() => { job.cancel(); console.log('Aufgabe abgebrochen');}, 20 * 60 * 1000);


Beispiel 2: Aufgabe zu einem bestimmten Datum

const schedule = require('node-schedule');

const date = new Date(2025, 5, 15, 10, 30, 0); // 15. Juni 2025, 10:30:00

const job = schedule.scheduleJob(date, function() { console.log('Einmalige Aufgabe ausgeführt um', new Date().toLocaleString());});

console.log('Aufgabe geplant für', date.toLocaleString());


Beispiel 3: Komplexe wiederkehrende Regel

const schedule = require('node-schedule');

const rule = new schedule.RecurrenceRule();rule.dayOfWeek = [1, 3, 5]; // Montag, Mittwoch, Freitagrule.hour = 9;rule.minute = 0;

const job = schedule.scheduleJob(rule, function() { console.log('Aufgabe wird um 9:00 an Werktagen (Mo, Mi, Fr) ausgeführt');});


Die Bibliothek node-cron

node-cron ist eine leichtgewichtige Alternative, die auf dem klassischen Cron aus Unix-Systemen basiert. Sie ist einfacher zu bedienen, aber weniger flexibel als node-schedule. Unterstützt 5 Felder (Minuten, Stunden, Tag des Monats, Monat, Wochentag).



Installation

npm install node-cron


Hauptfunktionen

  • Standard-Cron-Syntax (5 Felder).
  • Methoden start(), stop(), destroy().
  • Unterstützung von Zeitzonen über die Option timezone.
  • Möglichkeit, eine Aufgabe sofort mit now() auszuführen.


Beispiel 1: Aufgabe jeden Tag um Mitternacht ausführen

const c                    

Empfehlungen