W

python-resilience

von wshobson

python-resilience ist ein Guidance-Skill für eine robustere Fehlerbehandlung in Python mit Retries, exponentiellem Backoff, Jitter, Timeouts und begrenzten Retry-Fenstern. Nutze ihn, um praxistaugliche Resilience-Patterns für externe Aufrufe einzusetzen und tenacity-ähnliche Wrapper mit klareren Retry-Regeln umzusetzen.

Stars32.6k
Favoriten0
Kommentare0
Hinzugefügt30. März 2026
KategorieReliability
Installationsbefehl
npx skills add wshobson/agents --skill python-resilience
Kurationswert

Dieser Skill erreicht 78/100 und ist damit ein überzeugender Eintrag für Verzeichnisnutzer, die Python-Muster für Retry, Timeout und Fehlertoleranz suchen. Die Repository-Hinweise zeigen praxisnahe Inhalte mit klaren Einsatzsignalen, Grundkonzepten und Codebeispielen, sodass ein Agent ihn voraussichtlich mit weniger Interpretationsaufwand als einen generischen Prompt anwenden kann; das Vertrauen in die Einführung wird jedoch durch fehlende Begleitdateien, Installationshinweise und ausführbare Referenz-Assets eingeschränkt.

78/100
Stärken
  • Klar auslösbar: Frontmatter und „When to Use This Skill“ decken Retries, Timeouts, transiente Fehler, Rate Limiting und Circuit Breakers ausdrücklich ab.
  • Guter Praxisnutzen: Der Skill enthält einen Quick Start mit konkretem Python-Code auf Basis von tenacity sowie Resilience-Konzepten wie exponentiellem Backoff, Jitter und begrenzten Retries.
  • Substanziell auch für sich allein nutzbar: SKILL.md ist umfangreich, strukturiert und kein Platzhalter, mit mehreren Überschriften zu Konzepten und workflow-orientierter Anleitung.
Hinweise
  • Es sind keine Support-Dateien, Skripte oder Referenzen enthalten; Nutzer müssen die Anleitung daher ohne ausführbare Beispiele in ihren eigenen Projektkontext übertragen.
  • SKILL.md enthält weder einen Installationsbefehl noch Verweise auf Repositorys oder Dateien, was die Sicherheit bei Abhängigkeiten, Setup und der Integration der Muster in reale Codebasen einschränkt.
Überblick

Überblick über den python-resilience Skill

Was python-resilience leistet

Der python-resilience Skill hilft dir dabei, Python-Code so zu entwerfen, dass er bei unzuverlässigen Abhängigkeiten kontrollierter und sicherer fehlschlägt. Im Mittelpunkt stehen praxistaugliche Resilience-Muster: Retries, exponentielles Backoff, Jitter, Timeouts, begrenzte Retry-Fenster und fehlertolerante Wrapper um externe Aufrufe.

Für wen sich dieser Skill lohnt

Dieser python-resilience skill passt besonders gut für Entwickler, Plattform-Teams und Agent-Nutzer, die an Services arbeiten, die mit APIs, Datenbanken, Queues oder anderen vernetzten Systemen sprechen. Besonders nützlich ist er, wenn du Hilfe bei der Code-Generierung brauchst, die über „füge einen Retry hinzu“ hinausgeht und stattdessen sinnvolle Grenzen für den Umgang mit Fehlern setzt.

Die eigentliche Aufgabe, die er löst

Die meisten Nutzer brauchen keine Theorieseite über Reliability. Sie brauchen funktionierende Python-Muster für Fragen wie:

  • „Soll dieser Fehler erneut versucht werden oder sofort fehlschlagen?“
  • „Welche Backoff-Strategie ist unter Last sicher?“
  • „Wo sollten Timeouts definiert werden?“
  • „Wie vermeide ich unendliche Retries und Thundering Herds?“
  • „Welcher Decorator oder Helper sollte diesen externen Call kapseln?“

Der python-resilience Skill ist wertvoll, weil er diese Entscheidungen explizit macht, statt Retry-Logik als Einzeilen-Patch zu behandeln.

Was ihn von einem generischen Prompt unterscheidet

Ein generischer Coding-Prompt fügt möglicherweise überall Retries ein oder ignoriert den Unterschied zwischen transienten und permanenten Fehlern. python-resilience for Reliability ist klar meinungsstärker: Nur retrybare Fehler erneut versuchen, Jitter ergänzen, Versuche und Gesamtzeit begrenzen und externe Systemgrenzen als Hauptort für Resilience-Logik behandeln.

Was die Quelle tatsächlich abdeckt

Der Upstream-Skill besteht aus einer einzigen Datei SKILL.md, ist aber dennoch inhaltlich substanziell. Im Zentrum stehen:

  • transiente vs. permanente Fehler
  • exponentielles Backoff
  • Jitter
  • begrenzte Retries
  • praxisnahe Python-Beispiele mit tenacity

Das macht den Skill leicht prüfbar und schnell einsetzbar, bedeutet aber auch: Du bekommst Leitlinien, keine fertige Bibliothek und kein Test-Harness.

Wann dieser Skill besonders gut passt

Nutze python-resilience, wenn du:

  • Third-Party-APIs aufrufst
  • instabile Netzwerk- oder Service-Interaktionen kapselst
  • Microservices oder Worker baust
  • Reliability-Kontrollen in gemeinsame Client-Utilities einziehst
  • mit Rate Limiting, temporären Ausfällen oder sporadischen Timeouts umgehst

Wenn dein Code überwiegend aus reiner In-Process-Logik besteht, ist dieser Skill wahrscheinlich nicht die Installation mit dem größten Hebel.

So nutzt du den python-resilience Skill

Installationskontext für python-resilience

Installiere den Skill aus dem Repository wshobson/agents:

npx skills add https://github.com/wshobson/agents --skill python-resilience

Öffne nach der Installation zuerst die Skill-Datei:

  • plugins/python-development/skills/python-resilience/SKILL.md

Dieser Bereich des Repositories scheint nur das Skill-Dokument zu enthalten. Die Übernahme ist daher unkompliziert: Skill lesen und die Muster anschließend im eigenen Code anwenden.

Diese Datei solltest du zuerst lesen

Beginne mit SKILL.md von oben nach unten. Die wertvollsten Abschnitte für den Einstieg sind:

  1. When to Use This Skill
  2. Core Concepts
  3. Quick Start

Diese Reihenfolge gibt dir zuerst Fit, dann Designregeln und anschließend die Form der Implementierung, bevor du das Modell bittest, deinen Code zu ändern.

Welche Eingaben der Skill von dir braucht

Die Qualität der python-resilience usage hängt stark vom Kontext ab, den du mitlieferst. Bevor du den Skill aufrufst, solltest du Folgendes zusammentragen:

  • die Funktion oder Service-Grenze, die geschützt werden soll
  • den Typ der Abhängigkeit: HTTP API, DB, Queue, Cache, Dateisystem
  • die genauen Exceptions oder Fehlersymptome, die beobachtet wurden
  • ob Fehler transient oder permanent sind
  • Timeout-Erwartungen
  • Idempotenz-Bedingungen
  • maximal akzeptable Latenz
  • Retry-Budget: Anzahl der Versuche oder Gesamtdauer
  • ob viele Clients gleichzeitig erneut versuchen könnten

Ohne diese Angaben erzeugt das Modell oft zu breit angelegte Retry-Logik.

Aus einem groben Ziel einen starken Prompt machen

Schwacher Prompt:

Add resilience to this Python API client.

Besserer Prompt:

Use the python-resilience skill to refactor this Python client method.

Context:
- Dependency: third-party HTTP API
- Library: httpx
- Traffic: moderate, bursty
- Common failures: read timeout, connect timeout, occasional 429 and 503
- Permanent failures: 400, 401, 403 should not be retried
- Idempotency: safe to retry GET requests only
- SLO: fail within 8 seconds total
- Requirement: use bounded retries, exponential backoff with jitter, and clear logging

Task:
- Propose a retry policy
- Implement the wrapper/decorator
- Explain which exceptions and status codes are retryable
- Show where timeout configuration should live

Das funktioniert besser, weil der Skill dadurch genau die Entscheidungsgrenzen bekommt, für die er ausgelegt ist.

Erst die Policy anfordern, dann den Code

Ein starker Workflow mit dem python-resilience guide sieht so aus:

  1. nach der Fehlerklassifikation fragen
  2. eine Retry-/Timeout-Policy anfordern
  3. die Trade-offs prüfen
  4. erst danach Implementierungscode erzeugen

So springst du nicht direkt zu Decorators, bevor überhaupt klar ist, was retried werden sollte und was nicht.

Den Skill an externen Systemgrenzen einsetzen

Der Skill ist am wirksamsten bei Code, der Prozess- oder Netzwerkgrenzen überschreitet, zum Beispiel:

  • httpx- oder requests-Aufrufe
  • Message-Publishing oder -Consumption
  • Datenbankabfragen mit bekannten transienten Fehlermustern
  • Cloud-SDK-Aufrufe
  • Service-Client-Methoden

Starte nicht damit, große Business-Workflows Ende-zu-Ende zu kapseln. Setze Resilience-Kontrollen zuerst um die instabile Abhängigkeit herum.

Woran du gute python-resilience-Ausgaben erkennst

Wenn der Skill gut arbeitet, sollte die Ausgabe in der Regel Folgendes enthalten:

  • explizite Regeln für transiente vs. permanente Fehler
  • endliche Retry-Grenzen
  • exponentielles Backoff
  • Jitter
  • Platzierung der Timeouts
  • Beispiele mit Python-Tools wie tenacity
  • Hinweise zu Idempotenz und Side Effects

Wenn das Ergebnis nur „retry 3 times“ sagt, solltest du nach einer expliziteren Retry-Policy fragen.

Welches praktische Implementierungsmuster du anfordern solltest

Der Quell-Skill enthält einen tenacity-basierten Quick Start. In der Praxis heißt das, du kannst nach Mustern fragen wie:

  • einem Decorator um eine Service-Client-Methode
  • einem Wrapper-Helper für alle ausgehenden HTTP-Calls
  • getrennten Retry-Policies für Reads vs. Writes
  • Retries, gefiltert nach Exception-Typ oder Status-Code

Bei mutierenden Operationen solltest du das Modell begründen lassen, warum ein Retry sicher ist. Reliability-Muster, die Idempotenz ignorieren, können doppelte Side Effects erzeugen.

Häufige Fehler bei der python-resilience-Nutzung

Achte in generiertem Code auf diese Probleme:

  • Retries bei Authentifizierungs- oder Validierungsfehlern
  • keine Timeouts, nur Retries
  • Retry-Schleifen ohne Gesamtbudget
  • Backoff ohne Jitter
  • zu viel Code gekapselt, sodass die eigentliche Ursache verborgen wird
  • nicht-idempotente Writes werden standardmäßig retried

Das sind die praktischen Stolpersteine, die wichtiger sind als Code-Stil.

Ein nützlicher Workflow in deinem Repository

Für die besten Ergebnisse solltest du dem Skill Folgendes geben:

  • die aktuelle Client-Funktion
  • die Exception-Klassen aus deinen Logs
  • Beispiel-Status-Codes
  • dein Latenz- oder Retry-Budget
  • ein oder zwei repräsentative Failure-Traces

Frage dann nach:

  1. einer Policy-Zusammenfassung
  2. Code-Änderungen
  3. Tests, die du ergänzen solltest
  4. Monitoring-Feldern, die geloggt werden sollten

Diese Reihenfolge führt meist zu besser nutzbaren Ergebnissen als die Frage nach Code allein.

FAQ zum python-resilience Skill

Ist python-resilience nur für Web-APIs gedacht?

Nein. Der python-resilience skill dreht sich generell um unzuverlässige Abhängigkeiten. HTTP-Calls sind nur das naheliegendste Beispiel, aber dieselbe Logik gilt auch für Queues, Datenbanken, Caches und Cloud-Services, bei denen transiente Fehler häufig sind.

Ist das eine Bibliothek oder ein Guidance-Skill?

Es ist ein Guidance-Skill, kein eigenständiges Python-Package. Er vermittelt Muster und zeigt Implementierungsstile, einschließlich Beispielen auf Basis von tenacity, aber du setzt diese Muster weiterhin in deiner eigenen Codebasis um.

Wann sollte ich python-resilience nicht verwenden?

Nutze python-resilience nicht als Standardschicht über jeder Funktion. Er passt schlecht zu:

  • reiner CPU-gebundener lokaler Logik
  • Fehlern, die klar permanent sind
  • Workflows, bei denen Retries unsichere Side Effects duplizieren würden
  • Systemen, deren Latenzbudgets zu eng für Retry-Fenster sind

In solchen Fällen ist Fail Fast oder ein Redesign der Integration die bessere Wahl.

Eignet sich python-resilience für Einsteiger?

Ja, sofern du bereits grundlegende Python-Kenntnisse und Exception Handling mitbringst. Die Kernideen des Skills sind zugänglich, aber der Nutzer muss dennoch Business-Kontext liefern, etwa Retry-Sicherheit, Timeout-Budgets und welche Fehler überhaupt erneut versucht werden dürfen.

Warum ist das besser, als ein LLM einfach nach Retries zu fragen?

Der Vorteil von python-resilience for Reliability ist nicht nur Code-Generierung. Der Skill hilft dem Modell dabei, über Fehlerkategorien, begrenzte Retries und Backoff-Verhalten nachzudenken. Generische Prompts übersehen diese Grenzen oft und erzeugen Retry-Logik, die unter Last unsicher oder zu laut ist.

Legt python-resilience die exakte Retry-Policy für mich fest?

Nicht automatisch. Der Skill liefert ein starkes Vokabular und gute Muster, aber die beste Policy hängt vom Verhalten deiner Abhängigkeit, deinen Latenzanforderungen und deinen Idempotenz-Regeln ab. Du solltest damit rechnen, Anzahl der Versuche, Wartebereiche und Retry-Filter an deine Umgebung anzupassen.

So verbesserst du den python-resilience Skill

Gib dem python-resilience Skill eine bessere Fehlerklassifikation

Der schnellste Weg, Ergebnisse mit python-resilience zu verbessern, ist die klare Angabe, welche Fehler transient und welche permanent sind. Zum Beispiel:

  • transient: ConnectTimeout, ReadTimeout, 503, einige 429
  • permanent: 400, 401, 403, Schemafehler, falsche Zugangsdaten

Diese eine Unterscheidung entscheidet meist darüber, ob die generierte Policy sicher ist.

Gib Latenz- und Retry-Budgets vor

Wenn du kein Budget angibst, wählt das Modell möglicherweise beliebige Retry-Zahlen. Nenne Grenzen wie:

  • maximal 3 Versuche
  • gesamtes Retry-Fenster unter 8 Sekunden
  • Timeout pro einzelner Anfrage 2 Sekunden
  • Background-Job darf insgesamt 30 Sekunden brauchen

Solche Vorgaben führen zu realistischeren Implementierungen.

Sage, ob Operationen idempotent sind

Viele Resilience-Fehler entstehen, weil der Kontext zu Side Effects fehlt. Verbessere die python-resilience usage, indem du Operationen kennzeichnest als:

  • sicher zu retrien
  • nur mit Idempotency Key sicher
  • nicht sicher automatisch zu retrien

Das beeinflusst sowohl das Design des Decorators als auch die Exception-Filter.

Bitte explizit um Regeln für Nicht-Retry-Fälle

Frage nicht nur: „Was sollte retried werden?“ Frage auch:

  • was sollte sofort fehlschlagen?
  • was sollte dem aufrufenden Code unmittelbar gemeldet werden?
  • was sollte geloggt, aber nicht retried werden?

Dadurch wird die Ausgabe deutlich produktionsnäher.

Fordere Observability zusammen mit der Implementierung an

Ein guter python-resilience guide sollte nicht bei Decorators enden. Bitte das Modell, zusätzlich einzubauen:

  • Anzahl der Versuche in den Logs
  • Exception-Typ
  • verstrichene Zeit
  • finalen Fehlergrund
  • Meldung bei ausgeschöpften Retries

Ohne das kann deine Resilience-Schicht verschleiern, warum Aufrufe fehlschlagen.

Nach dem ersten Entwurf gezielt nachschärfen

Verfeinere die erste Ausgabe mit konkretem Feedback wie:

  • „Retrye keine POST-Requests.“
  • „Begrenze die Gesamtzeit, nicht nur die Anzahl der Versuche.“
  • „Behandle 429 anders als 500.“
  • „Nutze Jitter, um synchronisierte Retries zu vermeiden.“
  • „Trenne Timeout-Konfiguration von Retry-Konfiguration.“

Solche Iterationen verbessern die Implementierung spürbar.

Teste die vorgeschlagenen Fehlerpfade des Skills

Bitte das Modell, Tests zu erzeugen für:

  • Retries bei transienten Exceptions
  • Fast-Fail-Verhalten bei permanenten Exceptions
  • ausgeschöpfte Retries
  • Durchsetzung von Timeouts
  • Grenzen der Backoff-Policy

Nicht getesteter Resilience-Code ist leicht falsch konfiguriert und schwer vertrauenswürdig.

Verbessere die python-resilience-Ausgabe mit echten Traces

Wenn du Logs oder Beispiel-Stack-Traces hast, füge sie hinzu. Reale Fehlerspuren helfen python-resilience, engere Exception-Filter und glaubwürdigere Timeout-/Backoff-Einstellungen zu empfehlen als abstrakte Prompts.

Halte die Abstraktionsebene bewusst klein

Ein häufiger Fehler ist, den Skill ein vollständiges Resilience-Framework entwerfen zu lassen, obwohl du nur einen zuverlässigen Client-Wrapper brauchst. Starte kleiner:

  • eine Funktion
  • eine Abhängigkeit
  • eine Retry-Policy

Erweitere erst, wenn sich das Muster in der Praxis bewährt.

Nutze python-resilience als Review-Perspektive

Auch wenn du den Code bereits geschrieben hast, ist python-resilience als Review-Prompt nützlich. Bitte den Skill, bestehende Retry-Logik zu prüfen auf:

  • unbegrenzte Retries
  • fehlenden Jitter
  • schlechte Platzierung von Timeouts
  • Retries bei permanenten Fehlern
  • versteckte Risiken durch Side Effects

Gerade in reiferen Codebasen ist dieser Review-orientierte Einsatz oft der wertvollste Anwendungsfall des Skills.

Bewertungen & Rezensionen

Noch keine Bewertungen
Teile deine Rezension
Melde dich an, um für diesen Skill eine Bewertung und einen Kommentar zu hinterlassen.
G
0/10000
Neueste Rezensionen
Wird gespeichert...
python-resilience Installations- und Nutzungsleitfaden