TypeScript-Aufgabenplaner: Vollständiger Leitfaden zu Cron-Bibliotheken und Timern

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

TypeScript-Aufgabenplaner: Vollständiger Leitfaden



Ein Aufgabenplaner (Task Scheduler) ist ein Werkzeug, das es ermöglicht, Funktionen oder Skripte zu einer bestimmten Zeit oder in einem festgelegten Intervall auszuführen. Im TypeScript-Ökosystem gibt es mehrere ausgereifte Bibliotheken zur Umsetzung solcher Szenarien: von einfachen Timern bis hin zu leistungsstarken Cron-Systemen. In diesem Artikel betrachten wir die grundlegenden Ansätze und zeigen, wie man sie in realen Projekten einsetzt.



Wozu braucht man einen Aufgabenplaner?

Die Automatisierung wiederkehrender Aktionen ist eine Kernaufgabe jeder Serveranwendung. Typische Szenarien:

  • Stündliches Versenden von E-Mail-Benachrichtigungen.
  • Nächtliche Bereinigung temporärer Dateien.
  • Erfassung von Analysedaten am Tagesende.
  • Planmäßige Cache-Aktualisierung.

In TypeScript (und JavaScript) gibt es einen integrierten Basis-Mechanismus – setInterval und setTimeout –, aber für komplexe Zeitpläne sind spezialisierte Bibliotheken praktischer.



Integrierte Werkzeuge: setInterval und setTimeout

Der einfachste Weg ist die Verwendung globaler Funktionen:

// Beispiel: Alle 5 Sekunden ausführenconst intervalId = setInterval(() => {  console.log('Aufgabe ausgeführt um', new Date().toISOString());}, 5000);

// Stopp nach 30 SekundensetTimeout(() => { clearInterval(intervalId); console.log('Planer gestoppt');}, 30000);

Vorteile: Keine Installation erforderlich, funktioniert in jeder Umgebung. Nachteile: Keine Unterstützung für Cron-Ausdrücke, schwierige Verwaltung verpasster Aufgaben.



Bibliothek node-cron

Eine der beliebtesten Bibliotheken für Node.js. Arbeitet mit dem klassischen Cron-Format (5 Felder): Minuten, Stunden, Tag des Monats, Monat, Wochentag.



Installation

npm install node-cronnpm install @types/node-cron


Anwendungsbeispiel

import * as cron from 'node-cron';

// Aufgabe: Jede Minutecron.schedule('* * * * *', () => { console.log('Start jede Minute');});

// Aufgabe: Jeden Tag um 9:30 Uhrcron.schedule('30 9 * * *', () => { console.log('Tägliche Aufgabe um 9:30');});

// Aufgabe: An Werktagen um 18:00 Uhrcron.schedule('0 18 * * 1-5', () => { console.log('An Werktagen um 18:00');});


Aufgabenverwaltung

import * as cron from 'node-cron';

const task = cron.schedule('*/5 * * * *', () => { console.log('Alle 5 Minuten');});

// Aufgabe stoppentask.stop();

// Fortsetzentask.start();

// Status prüfenconsole.log(task.isActive()); // true oder false


Bibliothek croner

Eine modernere Alternative, die von Grund auf in TypeScript geschrieben wurde. Unterstützt erweiterte Syntax (Sekunden, Monatsnamen) und funktioniert sowohl in Node.js als auch im Browser.



Installation

npm install croner


Beispiel mit Sekunden

import Cron from 'croner';

// Alle 10 Sekundenconst job = new Cron('*/10 * * * * *', () => { console.log('Start alle 10 Sekunden');});

// Aufgabe: Jeden Montag um 8:30 Uhrconst weeklyJob = new Cron('30 8 * * 1', () => { console.log('Montag, 8:30');});

// Stopp nach 1 MinutesetTimeout(() => { job.stop(); console.log('Aufgabe gestoppt');}, 60000);


Erweiterte Funktionen

import Cron from 'croner';

// Aufgabe mit Name und Zeitzoneconst job = new Cron('0 9 * * *', { name: 'morning-report', timezone: 'Europe/Moscow'}, () => { console.log('Morgendlicher Bericht für Moskau');});

// Nächste Ausführungszeit abrufenconst nextRun = job.nextRun();console.log('Nächster Start:', nextRun.toISOString());

// Liste aller aktiven Aufgabenconst activeJobs = Cron.getJobs();console.log('Aktive Aufgaben:', activeJobs.length);


Vergleich von node-cron und croner

  • node-cron – eine bewährte Bibliothek

Empfehlungen