Tratar 429 sem tempestade de retries

Guia de produção: Tratar 429 sem tempestade de retries. Inclui artefato determinístico, limites de falha, controles de rollout e fontes verificadas.

Tratar 429 sem tempestade de retries

Guia de produção: Tratar 429 sem tempestade de retries. Inclui artefato determinístico, limites de falha, controles de rollout e fontes verificadas.

Decisão primeiro

Tratar 429 sem tempestade de retries é um contrato explícito de produção, não uma mudança isolada. Defina sucesso, falha terminal e rollback antes de mover tráfego; o artefato separa evidência de suposição.

Comece por classification, prove retry_after com um caso determinístico e transforme terminal em gate de release.

Artefato reutilizável

Uma linha só passa quando a evidência vem da mesma requisição, janela de teste ou versão de configuração.

Checkpoint Evidência Condição de aprovação
classification 429_source:_application,gateway,provider,or_shared_pool O registro une uma requisição lógica e uma tentativa.
retry_after delta-seconds_or_HTTP-date_parsed_against_a_monotonic_deadline O valor é preservado e comparado exatamente na fronteira do protocolo.
jitter bounded_random_delay_after_server_guidance O limite é explícito e falha de modo fechado.
attempts one_end-to-end_attempt_budget_shared_by_every_layer O limite é explícito e falha de modo fechado.
concurrency admission_reduced_before_retry_volume_grows O limite é explícito e falha de modo fechado.
terminal final_429_returned_with_request_ID_and_no_hidden_retries Owner, fonte, data e limitação ficam registrados.

Exemplo resolvido

O exemplo é sintético e determinístico. Use valores revisados do seu workload; nunca inclua segredos ou dados de clientes.

attempt_budget = 3
for attempt in 1..attempt_budget:
  result = call_once()
  if result.status != 429: return result
  if request.deadline_expired(): break
  delay = parse_retry_after(result.headers) ?? bounded_backoff(attempt)
  reduce_admission_concurrency()
  wait(min(delay + full_jitter(), request.remaining_time))
return terminal_429_without_another_retry()

Procedimento de implementação

  1. Congele requisição, resposta, configuração e baseline observável.
  2. Execute um caso positivo determinístico e preserve o resultado completo.
  3. Execute o caso negativo ou limite correspondente.
  4. Una tentativas por um request ID lógico e registre tempo, estado final e uso sem conteúdo sensível.
  5. Faça rollout em coorte limitada com critérios de parada.
  6. Releia estado durável e comportamento público; reverta se uma invariante falhar.

Modos de falha

Estas falhas invalidam o resultado mesmo quando o HTTP externo parece correto:

  • Retries sem orçamento amplificam a carga.
  • O cancelamento não chega à fila nem ao upstream e continua consumindo capacidade.
  • Uma resposta de texto é tratada como prova de compatibilidade completa.
  • Prompts, chaves ou argumentos sensíveis entram na telemetria.

Limite do Modelflare

Modelflare centraliza routing compatível com OpenAI, chaves, grupos, uso e falhas, mas uma rota configurada não prova capacidades opcionais. Verifique modelo e canal pelo protocolo nativo, preserve zeros explícitos e use a liquidação durável como verdade de billing.

Use o guia principal para a decisão mais ampla e a documentação para a configuração atual.

Checklist de publicação

  • Responder primeiro à pergunta principal.
  • Definir owner para cada campo, estado, métrica e fórmula.
  • Usar apenas identificadores sintéticos.
  • Preservar estrutura, código, limites e avisos em todos os idiomas.
  • Revalidar contratos, suporte e preços em T-1; mover a data se algo mudar.
  • Antes do horário, excluir de API pública, rotas e sitemap.

Fontes e data de verificação

Fontes verificadas em 2026-08-07; elas não provam uma rota não testada.