ForHosting KIT · Ferramentas para dev

Calcule um agendamento de backoff exponencial para tentativas

Esta calculadora de backoff exponencial transforma quatro configurações de repetição em uma lista exata de atrasos.

● BetaGrátis · no seu navegador
Use pelo WebAPIE-mailTelegramApp em breve

Informe o atraso antes da primeira nova tentativa, o multiplicador de crescimento, o atraso máximo permitido e a quantidade de tentativas. O resultado mostra a espera anterior a cada repetição na mesma unidade de tempo fornecida. Ele ajuda você a validar configurações, documentar clientes, comparar políticas e identificar janelas de recuperação longas demais antes que a lógica chegue à produção.

Defina a política de repetição com uma unidade consistente

Comece pelo atraso base, que corresponde à espera antes da primeira nova tentativa. Escolha uma unidade compatível com o sistema configurado, como milissegundos ou segundos, e use a mesma unidade no atraso máximo. A calculadora não fixa uma unidade porque a aritmética do backoff exponencial funciona igualmente em todas elas. O multiplicador controla a velocidade de crescimento do atraso ainda não limitado. O valor dois dobra cada espera seguinte, enquanto um mantém um intervalo constante. Por fim, tentativas significa novas tentativas, sem contar a operação inicial: ao informar cinco, você recebe cinco registros numerados de um a cinco. Deixar essa diferença explícita evita erros comuns de contagem em procedimentos e revisões de configuração. O atraso base precisa ser positivo, o multiplicador deve ser pelo menos um, o máximo deve ser positivo e a quantidade deve ser um número inteiro de um a mil. Essas restrições preservam o sentido do agendamento e limitam o tamanho da saída. Se o aplicativo usa milissegundos, identifique assim os resultados copiados para que ninguém os interprete como segundos depois.

Entenda o crescimento e o limite de atraso máximo

Para a tentativa n, o atraso sem limite é o atraso base multiplicado pelo multiplicador elevado a n menos um. O atraso retornado é o menor valor entre esse resultado e o máximo. Por exemplo, uma base de 250, multiplicador dois e máximo de 2,000 geram 250, 500, 1,000, 2,000 e, depois, 2,000 para todas as tentativas seguintes. O limite também vale quando está abaixo da base; portanto, base dez e máximo três retornam três desde a primeira tentativa. Esse comportamento respeita um teto estrito e deixa configurações incomuns visíveis, em vez de alterá-las silenciosamente. A implementação avança de forma iterativa, sem depender de uma potência ilimitada, e interrompe o crescimento quando alcança o teto. Assim, multiplicadores muito grandes continuam determinísticos sem expor um valor infinito no JSON. O agendamento não inclui jitter aleatório. Isso é intencional: ele revela a política determinística subjacente que o jitter modificaria, tornando o resultado adequado para testes, documentação e comparações. Adicione jitter separadamente conforme as regras exatas da biblioteca cliente usada por você.

Aplique o agendamento sem provocar uma tempestade de tentativas

Use a saída para revisar a janela de tempo antes de publicar uma política. Um atraso base curto pode parecer inofensivo, mas um multiplicador alto leva rapidamente as tentativas posteriores ao teto e amplia o período total de recuperação. Compare cada espera com timeouts de requisição, períodos de visibilidade da fila, horários de restauração de limites e a duração máxima aceitável para os usuários. A calculadora informa esperas antes das novas tentativas; ela não inclui a duração da requisição original nem o trabalho feito em cada tentativa que falhou. Some esses períodos separadamente ao estimar o pior caso completo. Em sistemas distribuídos, agendas determinísticas podem fazer muitos clientes repetirem ao mesmo tempo após uma falha compartilhada. Clientes de produção normalmente acrescentam jitter limitado para distribuir essa carga, mantendo o agendamento calculado como teto ou valor central. Esta capacidade não executa requisições, não aguarda, não contata serviços e não decide se um erro pode ser repetido. Ela apenas calcula a agenda aritmética, sem acesso à rede nem estado persistente. A execução no navegador é gratuita; a automação via API custa US$ 0,002 por solicitação.

Revise ajustes de repetição de um SDK

Transforme parâmetros propostos em esperas concretas antes de aprovar a configuração de um cliente.

Documente o tempo de recuperação

Inclua uma agenda exata por tentativa em um procedimento sem calcular potências manualmente.

Teste geradores de configuração

Compare políticas geradas com agendas determinísticas limitadas em verificações automatizadas.

Qual unidade de tempo a calculadora usa?

Qualquer unidade consistente funciona. Se base_delay estiver em milissegundos, cada atraso retornado e max_delay também estarão.

A quantidade de tentativas inclui a requisição inicial?

Não. Ela conta as novas tentativas após a requisição inicial, e a agenda possui exatamente esse número de itens.

O máximo é aplicado antes da primeira nova tentativa?

Sim. Todos os atrasos são limitados, inclusive o primeiro; portanto, max_delay pode ser menor que base_delay.

O resultado inclui jitter?

Não. Ele calcula a agenda exponencial determinística. Aplique o jitter separadamente conforme as regras do seu cliente.

O que acontece quando o limite é atingido?

O atraso permanece em max_delay nessa tentativa e em todas as tentativas posteriores da agenda solicitada.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/dev2/retry-backoff-schedule

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/dev2/retry-backoff-schedule \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"base_delay":250,"multiplier":2,"max_delay":8000,"attempts":6}'
{
  "base_delay": 250,
  "multiplier": 2,
  "max_delay": 8000,
  "attempts": 6
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.retry_backoff_schedule",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

max_attempts1000
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Ver a documentação completa do KIT →