Skip to content

Error Handling

Retry, fallback, and circuit breaker patterns.

3 modules

ModuleDescription
Devre KesiciDevre kesici deseni ile zincirleme hataları önleyin
Yedekİşlem başarısız olduğunda yedek değer sağlayın
Yeniden DeneYeniden deneme mantığıyla işlemleri sarın

Modules

Devre Kesici

error.circuit_breaker

Devre kesici deseni ile zincirleme hataları önleyin

Parameters:

NameTypeRequiredDefaultDescription
actionobjectYes-Devre kesici ile korunacak eylem
circuit_idstringYes-Devre kesici ile korunacak eylem
failure_thresholdnumberNo5Bu devre için benzersiz kimlik (durum takibi için)
failure_window_msnumberNo60000Hataları saymak için zaman penceresi
recovery_timeout_msnumberNo30000Kurtarma denemesi öncesi süre (yarı açık durum)
success_thresholdnumberNo3Devrenin kapanması için yarı açık durumda gereken başarılı istekler
fallbackobjectNo-Devre açıkken alternatif eylem
fallback_valueanyNo-Devre açıkken alternatif eylem
track_errorsarrayNo[]Devre açıkken döndürülecek statik değer

Output:

FieldTypeDescription
__event__stringYalnızca bu hata kodlarını eşik için say (boş = hepsi)
resultanyYönlendirme için olay (başarı/devre açık/yedek)
circuit_statestringEylem veya yedek sonuç
failure_countnumberDevrenin mevcut durumu (kapalı/açık/yarı açık)
last_failure_timestringPencere içindeki mevcut hata sayısı
circuit_opened_atstringSon hatanın zaman damgası

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}

Yedek

error.fallback

İşlem başarısız olduğunda yedek değer sağlayın

Parameters:

NameTypeRequiredDefaultDescription
operationobjectNo-Denenecek birincil işlem
fallback_valueanyNo-Denenecek birincil işlem
fallback_operationobjectNo-Başarısızlıkta döndürülecek statik değer
fallback_onarrayNo[]Başarısızlıkta yürütülecek alternatif işlem
include_error_infobooleanNoTrueYedeği tetikleyen hata kodları (boş = tüm hatalar)
log_fallbackbooleanNoTrueÇıkışa orijinal hata bilgisini dahil et

Output:

FieldTypeDescription
resultanyYedek kullanıldığında kaydedin
used_fallbackbooleanBirincil işlemden veya yedekten sonuç
sourcestringYedek kullanılıp kullanılmadığı
original_errorobjectSonucun kaynağı (birincil/yedek değer/yedek işlem)

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"]

Yeniden Dene

error.retry

Yeniden deneme mantığıyla işlemleri sarın

Parameters:

NameTypeRequiredDefaultDescription
operationobjectYes-Yeniden denenecek işlem (modül ID ve parametreler)
max_retriesnumberNo3Yeniden denenecek işlem (modül ID ve parametreler)
initial_delay_msnumberNo1000Maksimum yeniden deneme sayısı
max_delay_msnumberNo30000İlk yeniden denemeden önceki başlangıç gecikmesi
backoff_multipliernumberNo2.0Üstel geri çekilme çarpanı (örneğin, 2 her denemede gecikmeyi iki katına çıkarır)
jitterbooleanNoTrueKalabalık etkisini önlemek için gecikmeye rastgele oynama ekleyin
retry_onarrayNo[]Kalabalık etkisini önlemek için gecikmeye rastgele oynama ekleyin
timeout_per_attempt_msnumberNo0Yeniden denenecek hata kodlarının listesi (boş = tümünü dene)

Output:

FieldTypeDescription
__event__stringHer deneme için zaman aşımı (0 zaman aşımı yok)
resultanyYönlendirme için olay (başarı/tükenmiş)
attemptsnumberYönlendirme için olay (başarı/tükenmiş)
total_delay_msnumberBaşarılı denemenin sonucu
errorsarrayYapılan deneme sayısı

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.