Skip to content

Error Handling

Retry, fallback, and circuit breaker patterns.

3 modules

ModuleDescription
SicherungsschalterSchützen Sie sich vor Kaskadenfehlern mit dem Circuit-Breaker-Muster
FallbackFallback-Wert bereitstellen, wenn der Vorgang fehlschlägt
WiederholenOperationen mit konfigurierbarer Wiederholungslogik umwickeln

Modules

Sicherungsschalter

error.circuit_breaker

Schützen Sie sich vor Kaskadenfehlern mit dem Circuit-Breaker-Muster

Parameters:

NameTypeRequiredDefaultDescription
actionobjectYes-Die Aktion, die mit dem Circuit Breaker geschützt werden soll
circuit_idstringYes-Die Aktion, die mit dem Circuit Breaker geschützt werden soll
failure_thresholdnumberNo5Eindeutige Kennung für diesen Kreis (zur Statusverfolgung)
failure_window_msnumberNo60000Zeitfenster zur Fehlerzählung
recovery_timeout_msnumberNo30000Zeit vor dem Versuch der Wiederherstellung (halb-offener Zustand)
success_thresholdnumberNo3Erfolgreiche Anfragen im halb-offenen Zustand, um den Kreis zu schließen
fallbackobjectNo-Alternative Aktion, wenn der Kreis offen ist
fallback_valueanyNo-Alternative Aktion, wenn der Kreis offen ist
track_errorsarrayNo[]Statischer Wert, der zurückgegeben wird, wenn der Kreis offen ist

Output:

FieldTypeDescription
__event__stringNur diese Fehlercodes zum Schwellenwert zählen (leer = alle)
resultanyEreignis zur Weiterleitung (Erfolg/Circuit offen/Fallback)
circuit_statestringErgebnis der Aktion oder des Fallbacks
failure_countnumberAktueller Zustand des Kreises (geschlossen/offen/halb-offen)
last_failure_timestringAktuelle Fehleranzahl im Fenster
circuit_opened_atstringZeitstempel des letzten Fehlers

Example: Example

yaml
action: {"module": "http.post", "params": {"url": "https://api.example.com/submit"}}
circuit_id: example-api
failure_threshold: 5
failure_window_ms: 60000
recovery_timeout_ms: 30000

Example: Example

yaml
action: {"module": "http.get", "params": {"url": "https://api.example.com/data"}}
circuit_id: data-api
failure_threshold: 3
fallback: {"module": "cache.get", "params": {"key": "data_cache"}}

Example: Example

yaml
action: {"module": "database.query", "params": {"query": "SELECT * FROM users"}}
circuit_id: database
failure_threshold: 3
fallback_value: {"users": [], "from_cache": false}

Fallback

error.fallback

Fallback-Wert bereitstellen, wenn der Vorgang fehlschlägt

Parameters:

NameTypeRequiredDefaultDescription
operationobjectNo-Die primäre Operation, die versucht werden soll
fallback_valueanyNo-Die primäre Operation, die versucht werden soll
fallback_operationobjectNo-Statischer Wert, der bei Fehler zurückgegeben wird
fallback_onarrayNo[]Alternative Operation bei Fehler ausführen
include_error_infobooleanNoTrueFehlercodes, die Fallback auslösen (leer = alle Fehler)
log_fallbackbooleanNoTrueUrsprüngliche Fehlerinformationen in die Ausgabe aufnehmen

Output:

FieldTypeDescription
resultanyProtokoll, wenn Fallback verwendet wird
used_fallbackbooleanErgebnis der primären Operation oder des Fallbacks
sourcestringOb Fallback verwendet wurde
original_errorobjectQuelle des Ergebnisses (primär/Fallback-Wert/Fallback-Operation)

Example: Example

yaml
operation: {"module": "http.get", "params": {"url": "https://api.example.com/items"}}
fallback_value: []

Example: Example

yaml
operation: {"module": "http.get", "params": {"url": "https://api.example.com/config"}}
fallback_operation: {"module": "cache.get", "params": {"key": "config_cache"}}

Example: Example

yaml
operation: {"module": "api.call", "params": {"endpoint": "/data"}}
fallback_value: {"status": "unavailable"}
fallback_on: ["NETWORK_ERROR", "TIMEOUT_ERROR"]

Wiederholen

error.retry

Operationen mit konfigurierbarer Wiederholungslogik umwickeln

Parameters:

NameTypeRequiredDefaultDescription
operationobjectYes-Die Operation, die wiederholt werden soll (Modul-ID und Parameter)
max_retriesnumberNo3Die Operation, die wiederholt werden soll (Modul-ID und Parameter)
initial_delay_msnumberNo1000Maximale Anzahl von Wiederholungsversuchen
max_delay_msnumberNo30000Anfängliche Verzögerung vor dem ersten Wiederholungsversuch
backoff_multipliernumberNo2.0Multiplikator für exponentielles Backoff (z.B. 2 verdoppelt die Verzögerung bei jedem Versuch)
jitterbooleanNoTrueZufälliges Jitter zur Verzögerung hinzufügen, um Massenanfragen zu verhindern
retry_onarrayNo[]Zufälliges Jitter zur Verzögerung hinzufügen, um Massenanfragen zu verhindern
timeout_per_attempt_msnumberNo0Liste der Fehlercodes, bei denen wiederholt werden soll (leer = alle wiederholen)

Output:

FieldTypeDescription
__event__stringTimeout für jeden Versuch (0 für kein Timeout)
resultanyEreignis für Routing (Erfolg/erschöpft)
attemptsnumberEreignis für Routing (Erfolg/erschöpft)
total_delay_msnumberErgebnis aus erfolgreichem Versuch
errorsarrayAnzahl der Versuche

Example: Example

yaml
operation: {"module": "http.get", "params": {"url": "https://api.example.com/data"}}
max_retries: 3

Example: Example

yaml
operation: {"module": "database.query", "params": {"query": "SELECT * FROM users"}}
max_retries: 5
initial_delay_ms: 2000
backoff_multiplier: 2.0
jitter: true

Example: Example

yaml
operation: {"module": "api.call", "params": {"endpoint": "/submit"}}
max_retries: 3
retry_on: ["NETWORK_ERROR", "TIMEOUT_ERROR", "SERVICE_UNAVAILABLE"]

Released under the Apache 2.0 License.