Skip to content

Error Handling

Retry, fallback, and circuit breaker patterns.

3 modules

ModuleDescription
DisjuntorProteja contra falhas em cascata com o padrão de disjuntor
AlternativaForneça valor alternativo quando a operação falhar
Tentar NovamenteEnvolver operações com lógica de tentativa configurável

Modules

Disjuntor

error.circuit_breaker

Proteja contra falhas em cascata com o padrão de disjuntor

Parameters:

NameTypeRequiredDefaultDescription
actionobjectYes-A ação a ser protegida com disjuntor
circuit_idstringYes-A ação a ser protegida com disjuntor
failure_thresholdnumberNo5Identificador único para este circuito (para rastreamento de estado)
failure_window_msnumberNo60000Janela de tempo para contagem de falhas
recovery_timeout_msnumberNo30000Tempo antes de tentar recuperação (estado meio aberto)
success_thresholdnumberNo3Solicitações bem-sucedidas necessárias em meio aberto para fechar o circuito
fallbackobjectNo-Ação alternativa quando o circuito está aberto
fallback_valueanyNo-Ação alternativa quando o circuito está aberto
track_errorsarrayNo[]Valor estático a retornar quando o circuito está aberto

Output:

FieldTypeDescription
__event__stringConte apenas esses códigos de erro para o limite (vazio = todos)
resultanyEvento para roteamento (sucesso/circuito_aberto/alternativa)
circuit_statestringResultado da ação ou alternativa
failure_countnumberEstado atual do circuito (fechado/aberto/meio aberto)
last_failure_timestringContagem de falhas atual na janela
circuit_opened_atstringTimestamp da última falha

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}

Alternativa

error.fallback

Forneça valor alternativo quando a operação falhar

Parameters:

NameTypeRequiredDefaultDescription
operationobjectNo-A operação primária a tentar
fallback_valueanyNo-A operação primária a tentar
fallback_operationobjectNo-Valor estático a retornar em caso de falha
fallback_onarrayNo[]Operação alternativa a executar em caso de falha
include_error_infobooleanNoTrueCódigos de erro que acionam a alternativa (vazio = todos os erros)
log_fallbackbooleanNoTrueIncluir informações do erro original na saída

Output:

FieldTypeDescription
resultanyLog quando a alternativa é usada
used_fallbackbooleanResultado da operação primária ou alternativa
sourcestringSe a alternativa foi usada
original_errorobjectFonte do resultado (primário/valor_alternativo/operação_alternativa)

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

Tentar Novamente

error.retry

Envolver operações com lógica de tentativa configurável

Parameters:

NameTypeRequiredDefaultDescription
operationobjectYes-A operação para tentar novamente (ID do módulo e parâmetros)
max_retriesnumberNo3A operação para tentar novamente (ID do módulo e parâmetros)
initial_delay_msnumberNo1000Número máximo de tentativas de repetição
max_delay_msnumberNo30000Atraso inicial antes da primeira tentativa
backoff_multipliernumberNo2.0Multiplicador para backoff exponencial (ex.: 2 dobra o atraso a cada tentativa)
jitterbooleanNoTrueAdicionar variação aleatória ao atraso para evitar sobrecarga
retry_onarrayNo[]Adicionar variação aleatória ao atraso para evitar sobrecarga
timeout_per_attempt_msnumberNo0Lista de códigos de erro para tentar novamente (vazio = tentar todos)

Output:

FieldTypeDescription
__event__stringTempo limite para cada tentativa (0 para sem limite)
resultanyEvento para roteamento (sucesso/exaurido)
attemptsnumberEvento para roteamento (sucesso/exaurido)
total_delay_msnumberResultado de tentativa bem-sucedida
errorsarrayNúmero de tentativas feitas

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.