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.