O Que É Rate Limiting? Limitando o Volume de Requisições
Rate limiting é uma política que limita quantas requisições um cliente pode fazer dentro de uma janela de tempo, protegendo um serviço de sobrecarga e abuso ao rejeitar requisições em excesso.
APIs não conseguem servir requisições ilimitadas, então elas impõem rate limits que permitem um número definido de chamadas por janela e rejeitam o resto. Pipelines que chamam APIs em loops apertados, ou executam muitos jobs ao mesmo tempo contra a mesma API, rotineiramente esbarram nesses limites e precisam lidar com eles graciosamente.
Limites por janela
Um rate limit define um orçamento, como requisições por minuto ou por hora, escopado a um cliente, token ou IP. Uma vez gasto o orçamento, requisições adicionais são rejeitadas até a janela reiniciar.
A resposta 429
Quando você excede um limite, a API retorna 429 Too Many Requests, frequentemente com um header Retry-After indicando quanto tempo esperar. Honrar esse header é a forma correta de fazer backoff.
Como o CI aciona limites
- Muitos jobs paralelos compartilham um único token de API.
- Loops de polling apertados que chamam com frequência excessiva.
- Um matrix build multiplicando a contagem de chamadas.
Lidando com limites graciosamente
Respeite o Retry-After, adicione backoff com jitter, coloque respostas em cache e reduza chamadas desnecessárias. Espalhar requisições ao longo do tempo mantém um pipeline abaixo do limite em vez de martelar e ser bloqueado.
Limites no gateway
O rate limiting frequentemente é imposto em um API gateway na frente do serviço, então um 429 pode vir do gateway antes de a requisição chegar ao backend.
Transitório e passível de retry
Um 429 é explicitamente passível de retry após a espera indicada, ao contrário de um 4xx que sinaliza uma requisição inválida. Os runners da Latchkey fazem backoff e retry de 429s transitórios de endpoints comuns, honrando o Retry-After, para que um throttling breve não faça um job falhar.
Principais conclusões
- Rate limiting limita requisições por janela para proteger um serviço de sobrecarga.
- Exceder o limite retorna 429, geralmente com um Retry-After a honrar.
- Um 429 é passível de retry com backoff, ao contrário de um 4xx que significa requisição inválida.