Warum dieses Thema so oft unterschätzt wird
Automationen scheitern selten am "falschen Tool". Sie scheitern daran, dass die Realität unordentlich ist:
- APIs sind mal langsam.
- Requests laufen in Timeouts.
- Ein Provider drosselt dich (Rate Limit).
- Ein System ist kurz down.
Wenn du dann keinen Plan hast, passieren zwei Klassiker:
- Der Workflow bricht ab und du merkst es zu spät.
- Der Workflow retryt wild und produziert Duplikate oder Kosten.
Dieser Artikel zeigt dir die praxistauglichen Muster, mit denen du Retries und Rate Limits so baust, dass sie stabil sind und nicht zum Chaos führen.
Zur Übersicht: Workflows: Automatisierung
Ziel dieses Artikels
Du bekommst:
- eine klare Einordnung, welche Fehler du retryn solltest (und welche nicht),
- eine robuste Backoff-Strategie mit Jitter,
- einen mentalen Bauplan für Rate-Limit-sichere Workflows,
- eine Checkliste, die du auf bestehende Automationen anwenden kannst.
Kurzfazit (TL;DR)
- Retries sind normal. Design so, als würde jede Integration "at least once" liefern.
- Retrying ohne Idempotenz ist gefährlich: sichere Side-Effects ab, bevor du aggressiv retryest.
- Nutze Exponential Backoff mit Jitter und respektiere
Retry-After, wenn vorhanden. - Handle Rate Limits nicht nur mit "Warten", sondern mit Drosselung: weniger Parallelität, Batches, Delta-Sync.
- Monitoring darf nicht nur "Error Count" sein, sondern auch "seit wann war der letzte erfolgreiche Sync".
Schritt 1: Fehler sind nicht gleich Fehler
Bevor du Retries einbaust, unterscheide grob:
- Transient (kurzfristig): Timeouts, Verbindungsfehler, 502/503/504, 429
- Permanent (dauerhaft): 400 (falscher Request), 401/403 (Auth), 404 (falsche ID)
- Business-Logik: z.B. "Invoice already paid" ist kein technischer Fehler
Die wichtigste Regel: Retry nur dann, wenn ein erneuter Versuch realistischerweise erfolgreich sein kann, ohne dass du den Input änderst.
Praktische Retry-Entscheidung für HTTP APIs
Das ist kein Gesetz, aber ein sehr brauchbarer Startpunkt:
- Retry ok: 408, 425, 429, 500, 502, 503, 504
- Meist nicht retryn: 400, 401, 403, 404, 409, 422
Bei 409/422 hängt es vom Provider ab. Oft ist das ein Datenproblem, das du logisch lösen musst (Mapping, Reihenfolge, State).
Schritt 2: Retrying ohne Idempotenz macht Duplikate
Der größte Fehler ist nicht "zu wenige Retries", sondern Retries ohne Duplikat-Schutz.
Wenn ein Schritt Side-Effects hat, ist die Frage: Was passiert, wenn der Schritt zweimal läuft?
- "Setze Status auf Done" ist idempotent.
- "Erstelle Ticket" ist nicht idempotent.
- "Sende E-Mail" ist nicht idempotent.
Wenn du das sauber bauen willst: Idempotenz in Automationen
Minimaler Praxis-Default:
- Erzeuge einen stabilen Idempotency Key pro Event.
- Speichere ihn persistent (Dedupe-Store), bevor du Side-Effects auslöst.
- Verwende Upsert/Update statt blindem Create, wo immer es geht.
Schritt 3: Backoff richtig machen
Wenn du auf Fehler oder Rate Limits sofort mit "nochmal" reagierst, erzeugst du eine Retry-Spitze genau dann, wenn das Gegenüber schon überlastet ist.
Backoff heißt: du wartest mit jeder Wiederholung länger.
Exponential Backoff als Startpunkt
Ein verbreitetes Muster:
- Versuch 1: sofort
- Versuch 2: nach 1 s
- Versuch 3: nach 2 s
- Versuch 4: nach 4 s
- Versuch 5: nach 8 s
Mit einem Cap, z.B. max. 60 s oder max. 5 min.
Warum du Jitter brauchst
Wenn du 20 Workflows parallel hast und alle nach exakt 2/4/8 Sekunden retryen, klatschen sie wieder gleichzeitig auf die API. Das nennt man Retry-Synchronität.
Jitter löst das, indem du eine kleine Zufallskomponente hinzufügst.
Praktischer Default:
- Backoff berechnen
- Randomisierung im Bereich 50-100 Prozent des Backoffs
Damit verteilst du Last und erhöhst die Chance, dass ein Retry durchkommt.
Retry-Limits und Deadlines
Zwei Schutzmechanismen, die du fast immer brauchst:
- Max Attempts: z.B. 5 Versuche
- Max Age/Deadline: z.B. "dieser Job darf maximal 30 Minuten alt sein"
Warum? Ohne Limits hast du Endlosschleifen, Stau in Queues und am Ende unbegrenzte Kosten.
Schritt 4: Rate Limits verstehen, ohne sie überzuinterpretieren
Rate Limits kommen in verschiedenen Formen:
- Requests pro Zeit: z.B. 60/min oder 10/s
- Burst Limits: kurze Spitzen sind erlaubt, dann wird gedrosselt
- Parallelitäts-Limits: z.B. max. 3 gleichzeitige Requests
- Tageskontingent: z.B. 10.000/Tag
- Per Tenant/User: Limits gelten pro Account, API-Key oder Workspace
Du musst nicht jedes Detail kennen. Du brauchst eine Strategie, die bei allen Varianten robust bleibt.
Wie Rate Limits sich in der Praxis zeigen
Typisch:
- HTTP 429 (Too Many Requests)
- Optional:
Retry-AfterHeader - Optional: Rate-Limit-Header wie "Remaining" oder "Reset"
Wenn Retry-After vorhanden ist, ist das der beste Hint. Respektiere ihn,
und rechne zusätzlich mit Jitter.
Schritt 5: Rate-Limit-sichere Muster für Automationen
Muster A: Weniger Parallelität, mehr Durchsatz
Oft ist nicht "zu viel Traffic" das Problem, sondern "zu viel gleichzeitig".
Sehr wirksam:
- Concurrency limitieren (z.B. 1-3 gleichzeitige Jobs pro Integration)
- Requests pro Minute drosseln (Throttle)
- Batching nutzen (z.B. 50 Items pro Request statt 50 Requests)
Muster B: Queue vorne, Worker hinten
Wenn du Webhooks hast:
- Webhook schnell annehmen (verifizieren, minimal speichern)
- Event in Queue legen
- Worker verarbeitet mit Concurrency + Backoff
Damit entkoppelst du "Event kommt rein" von "API ist gerade langsam".
Einordnung dazu: Webhook vs. Polling
Muster C: Delta-Sync statt Vollsync
Beim Polling ist das Rate-Limit oft selbstgemacht, weil du zu viel abfragst.
Robuster:
since/Cursor nutzenupdatedAt/ETag verwenden- bewusst mit Overlaps arbeiten, aber deduplizieren
Wenn du Polling-Workflows baust, lohnt sich zusätzlich ein "Reconcile"-Job, der täglich/wöchentlich Abweichungen findet.
Checkliste: Retries, Backoff und Rate Limits in einem Workflow
- Ist klar, welche Fehler retrybar sind und welche nicht?
- Ist jeder Side-Effect idempotent oder dedupliziert?
- Gibt es Max Attempts und eine Deadline?
- Wird bei 429 respektvoll gewartet (inkl. Jitter)?
- Ist die Parallelität pro Integration begrenzt?
- Sind Polling-Jobs delta-basiert statt "liste alles"?
- Gibt es Monitoring auf "letzter erfolgreicher Sync"?
Wenn du 5-7 Punkte mit "ja" beantworten kannst, bist du in der Praxis sehr stabil aufgestellt.
Typische Fehler, die dich Zeit und Nerven kosten
-
Retry auf 400/401/403 Das ist fast immer ein Logik- oder Auth-Problem, kein "wird gleich besser".
-
Keine Idempotenz Du bekommst doppelte Tickets, doppelte E-Mails, doppelte Einträge.
-
Fixed Delay ohne Jitter Führt zu synchronen Retry-Wellen und macht das Problem schlimmer.
-
Unbegrenzte Retries Am Ende ist die Queue voll und du bezahlst für Fehler.
-
Logs mit sensiblen Daten Debugging ist wichtig, aber Tokens und komplette Payloads gehören nicht in Logs.
FAQ
Wie viele Retries sinnvoll sind
Als Default sind 3-5 Versuche ein guter Startpunkt, kombiniert mit Backoff.
Wenn es um Backoffice-Prozesse geht (z.B. Monatsabschluss), ist "weniger, aber mit längeren Abständen" oft besser als "schnell und aggressiv".
Was du bei sehr strengen Tageslimits tun kannst
- Batch statt Einzelcalls
- nur Deltas abholen
- Jobs zeitlich verteilen (z.B. nachts)
- nicht-kritische Syncs seltener laufen lassen
Manchmal ist die ehrliche Antwort: Das Limit ist Teil des Produkts. Dann muss der Workflow damit leben, nicht dagegen kämpfen.
Wie das in Tools wie Make oder n8n funktioniert
Die Konzepte sind identisch, auch wenn die Bedienung anders ist:
- Fehler abfangen und nur retrybare Fälle retryn
- Backoff-Delays einbauen
- Concurrency reduzieren (oder Szenarien zeitlich staffeln)
- deduplizieren über Data Store oder eine Datenbank
Wenn du das Tooling einordnen willst: Make vs. Alternativen
Transparenz
Dieser Blog kann Affiliate-Links enthalten. Aktuell liegt der Fokus auf Inhalten und Workflows. Wenn später Links ergänzt werden, werden sie klar gekennzeichnet.
Nächster Schritt
- Duplikate verhindern, bevor du retryest: Idempotenz in Automationen
- Webhooks und Polling zuverlässig kombinieren: Webhook vs. Polling
- Der Rahmen für stabile Automationen: Workflow-Automatisierung
- Tool-Beispiel aus der Praxis: Make für IT-Freelancer
- Zur Übersicht: Workflows: Automatisierung