Aufgabenplaner für Node.js (node-cron, node-schedule, Bull)

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 in Node.js: Überblick und Anwendungsbeispiele



In der modernen Backend-Entwicklung besteht häufig die Notwendigkeit, Code nach einem Zeitplan auszuführen: E-Mail-Newsletter versenden, Cache leeren, Datenbank-Backups erstellen oder aggregierte Daten aktualisieren. Im Node.js-Ökosystem gibt es für diese Zwecke mehrere ausgereifte Bibliotheken. In diesem Artikel betrachten wir drei grundlegende Ansätze zur Aufgabenplanung: klassisches Cron, flexible Zeitplanung und Aufgabenwarteschlangen.



1. node-cron — klassisches Cron für JavaScript



node-cron ist eine minimalistische Bibliothek, die es ermöglicht, Funktionen nach standardmäßigen Cron-Ausdrücken auszuführen. Sie eignet sich ideal für einfache periodische Aufgaben (jede Minute, jede Stunde, jeden Tag um 3:00 Uhr).



Installation:



npm install node-cron


Beispiel einer Aufgabe, die jede Minute ausgeführt wird:



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

cron.schedule('* * * * *', () => { console.log('Aufgabe wird jede Minute ausgeführt');});


Struktur des Cron-Ausdrucks: Sekunde Minute Stunde Tag_des_Monats Monat Tag_der_Woche (bei node-cron ist die Sekunde optional).



Beispiele für Ausdrücke:

  • '0 0 * * *' — jeden Tag um Mitternacht
  • '*/5 * * * *' — alle 5 Minuten
  • '0 9-18 * * 1-5' — jede Stunde von 9 bis 18 Uhr an Werktagen
  • '30 3 * * 0' — jeden Sonntag um 3:30 Uhr


Die Bibliothek unterstützt die Validierung von Ausdrücken sowie das Starten/Stoppen von Aufgaben:



const task = cron.schedule('*/10 * * * *', () => {  // Aufgabe alle 10 Minuten});

// Aufgabe stoppentask.stop();

// Wieder aufnehmentask.start();

// Prüfen, ob die Aufgabe aktiv istconsole.log(task.isStarted()); // true/false


Wann verwenden: für einfache periodische Aktionen, bei denen keine Zustandsspeicherung oder Fehlerbehandlung erforderlich ist.



2. node-schedule — flexible Zeitplanung mit Unterstützung für wiederkehrende Regeln



node-schedule ist eine leistungsfähigere Alternative, die es ermöglicht, Zeitpläne nicht nur über Cron, sondern auch über JavaScript-Objekte mit expliziter Angabe von Daten, Wochentagen und Uhrzeiten zu definieren.



Installation:



npm install node-schedule


Beispiel mit einem Cron-Ausdruck:



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

const job = schedule.scheduleJob('*/5 * * * *', () => { console.log('Wird alle 5 Minuten ausgeführt');});


Der Hauptvorteil ist die Möglichkeit, den Zeitplan über ein Objekt festzulegen:



const job = schedule.scheduleJob({  hour: 14,  minute: 30,  dayOfWeek: [1, 3, 5] // Montag, Mittwoch, Freitag}, () => {  console.log('14:30 Uhr an Werktagen');});


Es kann auch eine einmalige Aufgabe für ein bestimmtes Datum geplant werden:



const date = new Date(2025, 11, 31, 23, 59, 0);

schedule.scheduleJob(date, () => { console.log('Das neue Jahr ist da!');});


Die Bibliothek unterstützt das Abbrechen von Aufgaben und die Überprüfung des nächsten Ausführungszeitpunkts:



// Aufgabe abbrechenjob.cancel();

// Nächstes Ausführungsdatum abrufenconsole.log(job.nextInvocation()); // Date object


Wann verwenden: wenn eine genaue Zeitsteuerung, die Kombination von Regeln oder einmalige Aufgaben erforderlich sind.



3. Bull — Aufgabenwarteschlangen mit Planung und Wiederholungsversuchen



Bull ist ein vollwertiges Warteschlangensystem auf Basis von Redis, das einen leistungsstarken Planer enthält. Bull ermöglicht nicht nur das Zurückstellen von Aufgaben, sondern auch die Verwaltung von Wiederholungen, Prioritäten und paralleler Ausführung.



Installation:



npm install bull


Basisbeispiel einer Warteschlange mit einer verzögerten Aufgabe:



const Queue = require('bull');

const emailQueue = new Queue('email', { redis: { host: 'localhost', port: 63

Empfehlungen