Geplante Directus Flows mit Cron: Sync, Cleanup und wiederkehrende Jobs

Viele Automatisierungen werden nicht durch Benutzeraktionen oder Webhooks ausgelöst, sondern laufen nach einem festen Zeitplan. Typische Beispiele sind Datenimporte, nächtliche Bereinigungen, Report-Erstellung oder ERP-Synchronisationen.

Mit dem Schedule Trigger bietet Directus eine integrierte Cron-Funktion, mit der sich wiederkehrende Aufgaben direkt innerhalb der Plattform ausführen lassen – ganz ohne externe Scheduler oder Betriebssystem-Cronjobs.

In diesem Leitfaden lernen Sie:

  • wann Cron-Trigger sinnvoll sind
  • wie die Directus-Cron-Syntax funktioniert
  • wie Sie einen täglichen Cleanup-Job erstellen
  • welche Stolperfallen in Multi-Instance-Umgebungen existieren
  • wann Sie komplexe Jobs besser an Inngest oder andere Systeme auslagern

Für die Grundlagen empfiehlt sich zunächst die Directus Flows Anleitung.

Wann brauche ich Cron-Trigger?

Nicht jede Automatisierung benötigt einen Zeitplan.

Oft genügt ein Event Hook oder ein Webhook.

Cron-Trigger kommen dann ins Spiel, wenn Prozesse unabhängig von Benutzeraktionen ausgeführt werden sollen.

Typische Anwendungsfälle

Daten-Synchronisation

Beispiele:

  • ERP-Daten importieren
  • Lagerbestände aktualisieren
  • Produktdaten synchronisieren
  • CRM-Abgleich durchführen

Daten bereinigen

Typische Aufgaben:

  • alte Logs löschen
  • Sessions entfernen
  • temporäre Datensätze bereinigen
  • Archivierungen durchführen

Reports erstellen

Beliebte Szenarien:

  • tägliche Umsatzberichte
  • wöchentliche KPI-Auswertungen
  • Monatsabschlüsse
  • Management-Dashboards aktualisieren

 

Event Hook oder Cron?

Ein häufiger Fehler besteht darin, Cron-Jobs einzusetzen, obwohl ein Event Hook ausreichend wäre.

Beispiel:
❌ Alle 10 Minuten prüfen, ob neue Kunden existieren.

Besser:
✅ Flow direkt bei Kundenerstellung starten.

Faustregel:

  • Ereignisgetrieben = Event Hook
  • Zeitgesteuert = Cron Trigger

 

Die 6-Punkt-Cron-Syntax

Ein häufiger Stolperstein:

Directus verwendet 6 Felder, nicht die klassische 5-Feld-Cron-Syntax vieler Linux-Systeme.

Aufbau der Directus-Cron-Syntax

Sekunde Minute Stunde Tag Monat Wochentag

Beispiel:

0 0 2 * * *

Bedeutung: Jeden Tag um 02:00:00 Uhr.

Unterschied zur klassischen Cron-Syntax

Viele Entwickler kennen dieses Format:

0 2 * * *

Das ist die klassische Linux-Variante mit fünf Feldern.

Directus erweitert diese Syntax um das zusätzliche Sekunden-Feld.

Vergleich:

System

Felder

Linux Cron

5

Directus

6

Dies ist die häufigste Ursache für fehlerhafte Schedule-Trigger.

 

Typische Beispiele

Jede Stunde

0 0 * * * *

Jeden Tag um Mitternacht

0 0 0 * * *

Jeden Montag um 08:00 Uhr

0 0 8 * * 1

Alle fünf Minuten

0 */5 * * * *

Cron-Generatoren

Hilfreiche Werkzeuge:

  • crontab.guru
  • cronmaker.com
  • cronhub.io

Wichtig:

Prüfen Sie immer, ob das Tool 5 oder 6 Felder verwendet.

 

Schritt für Schritt: Täglicher Datenbank-Cleanup

Nehmen wir an, Log-Einträge älter als 90 Tage sollen automatisch gelöscht werden.

Schedule Trigger anlegen

Neuer Flow:
Trigger-Typ:
Schedule
Cron-Ausdruck:
0 0 2 * * *

Der Flow läuft damit täglich um 02:00 Uhr.

Alte Datensätze lesen

Operation: Read Data

Filter:

{
"created_at": {
"_lt": "$NOW(-90 days)"
}
}

Damit werden alle Datensätze ermittelt, die älter als 90 Tage sind.

Delete Data ausführen

Operation: Delete Data

Input: Ergebnis der vorherigen Read-Operation.

Logging ergänzen

Abschließend empfiehlt sich eine Log-Operation.

Beispiel:

{
"message": "Cleanup erfolgreich abgeschlossen",
"deleted": 1248
}

So lassen sich spätere Fehler leichter nachvollziehen.

 

Mehrere Directus-Instanzen

In Entwicklungsumgebungen spielt dies meist keine Rolle.

In produktiven Cloud-Installationen dagegen sehr wohl.

Das Problem doppelter Ausführung

Angenommen:

  • Directus Instance A läuft
  • Directus Instance B läuft

Beide Instanzen kennen denselben Cron-Trigger.

Dann kann derselbe Flow doppelt gestartet werden.

Folgen:

  • doppelte API-Aufrufe
  • doppelte E-Mails
  • doppelte Rechnungen
  • inkonsistente Daten

Warum das passiert

Directus besitzt aktuell keine zentrale Cron-Locking-Mechanik.

Jede laufende Instanz bewertet Cron-Ausdrücke eigenständig.

In Cluster-Umgebungen kann dies zu Race Conditions führen.

 

Cron-Locking-Strategien

Datenbank-Lock

Vor Ausführung:

Prüfe Lock
Setze Lock
Führe Job aus
Entferne Lock

Geeignet für:

  • kritische Prozesse
  • ERP-Synchronisationen
  • Finanzdaten

Queue-Systeme

Beispiele:

  • RabbitMQ
  • Redis Queue
  • BullMQ

Der Cron stößt nur einen Job an.

Die Queue übernimmt die Ausführung.

Empfehlung

Für die meisten Mittelstandsprojekte genügt: Eine dedizierte Directus-Instanz übernimmt ausschließlich Cron-Jobs.

Dadurch werden doppelte Ausführungen zuverlässig vermieden.

 

Performance-Hinweise

Nicht jeder Prozess eignet sich für Directus Flows.

Lange Jobs auslagern

Problematische Beispiele:

  • 500.000 Produkte synchronisieren
  • große ERP-Imports
  • komplexe KI-Verarbeitung

Hier empfiehlt sich eine Auslagerung an:

  • Inngest
  • n8n
  • eigene Worker

Mehr dazu im Artikel Directus + Inngest Workflows.

 

Pagination nutzen

Ein häufiger Fehler: 100.000 Datensätze in einem einzigen Read Data Schritt laden.

Besser:

  • paginieren
  • in Blöcken verarbeiten
  • Batch-Größe definieren

Dadurch bleibt die Speichernutzung kontrollierbar.

Logging und Monitoring

Jeder produktive Cron-Flow sollte:

  • Startzeit protokollieren
  • Endzeit protokollieren
  • Laufzeit messen
  • Fehler speichern

Dadurch werden Probleme früh sichtbar.

 

Best Practices

Cron nur für wirklich zeitgesteuerte Prozesse

Wenn ein Event Hook ausreicht, sollte kein Cron verwendet werden.

Kritische Jobs außerhalb der Geschäftszeiten ausführen

Beispiele:

  • 02:00 Uhr
  • 03:00 Uhr
  • Wochenende

Dadurch sinkt die Last auf produktiven Systemen.

Große Jobs in Teilprozesse zerlegen

Statt: Importiere 500.000 Datensätze

Besser: Importiere 10 x 50.000 Datensätze

Das verbessert Stabilität und Wiederanlaufbarkeit.

 

Fazit

Der Schedule Trigger macht Directus zu einer vollwertigen Automatisierungsplattform für wiederkehrende Aufgaben.

Besonders geeignet sind:

  • ERP-Synchronisationen
  • Datenbereinigungen
  • Report-Erstellung
  • periodische Integrationen

Wichtig ist dabei vor allem das Verständnis der 6-stelligen Cron-Syntax, da viele Entwickler versehentlich die klassische 5-Feld-Notation verwenden.

In produktiven Multi-Instance-Umgebungen sollten zusätzlich Locking-Mechanismen oder dedizierte Scheduler-Instanzen eingeplant werden.

Wenn Cron-Jobs sehr groß, langlaufend oder geschäftskritisch werden, empfiehlt sich die Kombination von Directus mit spezialisierten Workflow-Systemen wie Inngest.

FAQ

Welche Cron-Syntax nutzt Directus?

Directus verwendet eine 6-stellige Cron-Syntax mit Sekundenfeld: Sekunde, Minute, Stunde, Tag, Monat und Wochentag.

Was passiert, wenn ich mehrere Directus-Instanzen betreibe?

Jede Instanz kann denselben Cron-Flow ausführen. Ohne zusätzliche Maßnahmen können dadurch doppelte Ausführungen entstehen.

Wie debugge ich fehlgeschlagene Cron-Flows?

Über Logging-Operations, Activity Logs und eigene Monitoring-Collections lassen sich Fehler nachvollziehen.

Gibt es ein Limit, wie häufig Cron-Flows laufen können?

Technisch können Cron-Flows sehr häufig ausgeführt werden. Praktisch sollten Laufzeit, Serverlast und mögliche Überschneidungen berücksichtigt werden.

Wann sollte ich Cron-Jobs an Inngest auslagern?

Bei langen Laufzeiten, komplexen Retry-Strategien, hoher Last oder umfangreichen Event-Ketten ist Inngest häufig die bessere Wahl.