Política de retry da SDK.
Por padrão a SDK tenta novamente apenas em HTTP 429 (rate limit) e em falhas de conexão — nunca em timeouts nem em erros de negócio, para não duplicar cobranças/envios.
ApiBrasil.new(
retry: %ApiBrasil.Core.Retry{
retries: 3,
min_delay: 500,
retry_on_statuses: [429, 503]
}
)
# ou desativando o retry
ApiBrasil.new(retry: ApiBrasil.Core.Retry.none())Todos os tempos são em milissegundos.
Summary
Functions
Política de retry.
Calcula o backoff exponencial com jitter: min_delay * 2^tentativa,
limitado a max_delay. A tentativa é contada a partir de 0.
Número total de tentativas (a original mais os retries).
Cria a política a partir de uma keyword list ou de um mapa.
Política que desativa o retry.
Informa se um status HTTP dispara retry nesta política.
Aguarda o atraso informado. Zero não bloqueia.
Types
@type t() :: %ApiBrasil.Core.Retry{ max_delay: non_neg_integer(), min_delay: non_neg_integer(), retries: non_neg_integer(), retry_on_statuses: [pos_integer()] }
Functions
Política de retry.
:retries— novas tentativas além da original. Padrão:2.:min_delay— atraso base do backoff exponencial, em ms. Padrão:300.:max_delay— teto do atraso entre tentativas, em ms. Padrão:5_000.:retry_on_statuses— status HTTP que disparam retry. Padrão:[429].
@spec backoff_delay(t(), non_neg_integer()) :: non_neg_integer()
Calcula o backoff exponencial com jitter: min_delay * 2^tentativa,
limitado a max_delay. A tentativa é contada a partir de 0.
@spec max_attempts(t()) :: pos_integer()
Número total de tentativas (a original mais os retries).
Cria a política a partir de uma keyword list ou de um mapa.
@spec none() :: t()
Política que desativa o retry.
@spec retries_status?(t(), pos_integer()) :: boolean()
Informa se um status HTTP dispara retry nesta política.
@spec sleep(non_neg_integer()) :: :ok
Aguarda o atraso informado. Zero não bloqueia.