HTTP 429 Too Many Requests: espere e tente de novo do jeito certo

HTTP 429 Too Many Requests

HTTP 429 Too Many Requests: Retry-After e backoff | We.Inc

O que o status 429 significa, como ler o Retry-After e código de retry com backoff exponencial e jitter. Planeje o seu próprio calendário de novas tentativas com a calculadora.

Uma resposta 429 significa que o servidor está aplicando rate limit em você: este cliente enviou mais requisições em uma janela de tempo do que ele permite. Pare de enviar por um tempo. Se a resposta trouxer um cabeçalho Retry-After, espere esse tempo; se não, tente de novo com backoff exponencial mais jitter aleatório, para que muitos clientes não tentem de novo todos ao mesmo tempo.

Como ler uma resposta 429

Defina o primeiro atraso, o teto e quantas novas tentativas você permite, e escolha um estilo de jitter. A calculadora lista a faixa de espera de cada tentativa e o total no pior caso, para você ver se o seu cliente desiste antes de a janela do servidor reiniciar.

Perguntas frequentes

429 é um erro do cliente ou do servidor?

Está na classe 4xx, então descreve o comportamento do cliente: requisições demais. Nada está quebrado no servidor. A solução é enviar menos requisições ou espalhá-las no tempo.

O que o Retry-After contém?

Ou um número de segundos para esperar, como 120, ou uma data HTTP depois da qual você pode tentar de novo. O seu cliente deve tratar as duas formas.

Por que adicionar jitter ao backoff exponencial?

Sem jitter, todo cliente que falhou no mesmo instante tenta de novo no mesmo instante, o que recria o pico. Uma espera aleatória dentro de cada janela espalha as novas tentativas.

Por que o rate limit do meu nginx devolve 503 em vez de 429?

O módulo limit_req rejeita com 503, a menos que você mude isso. Adicione limit_req_status 429; ao lado da sua linha limit_req para que os clientes vejam o código mais preciso.

Uma CDN pode guardar uma resposta 429 em cache?

Não pode. A RFC 6585 diz que respostas com o código de status 429 não podem ser guardadas por um cache, então cada cliente recebe uma resposta nova quando o limite é liberado.

Quem envia 429 e por quê

Os três estilos de backoff da calculadora

Código de cliente que respeita o 429

fetch com Retry-After e full jitter

Lê as duas formas de Retry-After, usa full jitter como alternativa e para depois de um número fixo de novas tentativas.

Enviando 429 do seu próprio servidor

nginx: limite por IP e resposta com 429

limit_req rejeita com 503 por padrão; limit_req_status troca para 429.

Como a resposta fica

Um corpo curto explicando o limite e um Retry-After em segundos.

Calculadora de calendário de novas tentativas

Atraso base (ms)

Teto por espera (ms)

Novas tentativas

Estilo de jitter

Full jitter

Equal jitter

Sem jitter

Espera antes de cada nova tentativa

Tentativa

Espera mais curta

Espera mais longa

Pior caso antes de desistir: {v}

Use números inteiros maiores que zero, com o teto pelo menos igual à base.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site