IT
Software für Freelancer

Solo IT-Freelancer - Reviews & Workflows

Artikel

Retries, Backoff & Rate Limits: So bleiben Automationen stabil

Praktische Strategien für Retries, Exponential Backoff mit Jitter und den Umgang mit 429/Rate Limits - damit deine Workflows nicht an API-Grenzen scheitern.

Praxisnah Checkliste

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:

  1. Der Workflow bricht ab und du merkst es zu spät.
  2. 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-After Header
  • 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:

  1. Webhook schnell annehmen (verifizieren, minimal speichern)
  2. Event in Queue legen
  3. 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 nutzen
  • updatedAt/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

  1. Retry auf 400/401/403 Das ist fast immer ein Logik- oder Auth-Problem, kein "wird gleich besser".

  2. Keine Idempotenz Du bekommst doppelte Tickets, doppelte E-Mails, doppelte Einträge.

  3. Fixed Delay ohne Jitter Führt zu synchronen Retry-Wellen und macht das Problem schlimmer.

  4. Unbegrenzte Retries Am Ende ist die Queue voll und du bezahlst für Fehler.

  5. 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

Mehr Artikel und Workflows für Solo-Freelancer.