Como lidar com a limitação de taxa

A limitação de taxa é uma técnica comum usada pelos provedores de API para gerenciar o número de solicitações que podem ser feitas em seu serviço em um período de tempo específico. Os provedores de API usam a limitação de taxa para garantir que seu serviço permaneça disponível e responsivo a todos os usuários e para evitar abusos ou uso excessivo do serviço.

Ao usar APIs de nuvem em seu aplicativo, você deve entender seus limites de taxa. As técnicas a seguir podem ajudá-lo a lidar com a limitação de taxa em seus aplicativos:

  • Entenda os limites de velocidade. Verifique a documentação da API que você usa para entender seus limites de taxa. Os limites de taxa podem depender do provedor de API ou do plano de serviço que você usa. Por exemplo, algumas APIs podem ter limites de taxa diferentes para planos gratuitos e pagos.
  • Use informações de limitação de taxa. APIs que usam limites de taxa normalmente comunicam os limites atuais nos cabeçalhos de resposta. Por exemplo, o RateLimit-Remaining cabeçalho indica o número de solicitações que permanecem na janela atual. Se você receber uma resposta com esse cabeçalho definido como 0, você saberá que atingiu o limite de taxa e deverá aguardar a próxima janela antes de enviar outra solicitação. O RateLimit-Reset cabeçalho indica a hora em que o limite de taxa é redefinido. Nomes e formatos de cabeçalho diferem por API: GitHub, por exemplo, usa x-ratelimit-reset e x-ratelimit-remaining em segundos de época UTC. Algumas APIs enviam os cabeçalhos somente depois que você atinge um limite. Um exemplo é quando você tem 10% das solicitações restantes.
  • Otimizar o uso da API. Alguns serviços atribuem custos diferentes a solicitações diferentes com base em sua complexidade. Por exemplo, algumas APIs podem cobrar mais por solicitações que retornam mais dados. Para reduzir o custo do aplicativo, otimize o uso da API buscando apenas os dados necessários. Use solicitações em lote se a API der suporte a elas. Eles ajudam você a reduzir o número de recursos necessários para processar a resposta e permanecer dentro dos limites de taxa.
  • Implementar um limitador de taxa local. Implemente um limitador de taxa dentro do próprio aplicativo para limitar o número de solicitações que podem ser feitas à API em um período de tempo específico. Você pode fazer isso usando técnicas como os algoritmos token bucket ou leaky bucket, que permitem que o aplicativo faça muitas solicitações por período de tempo. Mais solicitações são enfileiradas ou descartadas.
  • Evite exceder os limites de taxa. Quando você excede os limites de taxa, a API limita suas solicitações, normalmente com um código de status HTTP 429 Too Many Requests . O throttling afeta a taxa de transferência do aplicativo mais do que o rate limiting afeta. Use as informações nos cabeçalhos de resposta de limite de taxa para permanecer dentro dos limites e evitar a limitação.

Usando essas técnicas, você pode criar aplicativos que são resilientes à limitação de taxa e podem continuar funcionando mesmo quando a API está sob carga pesada. Em seguida, teste se isso acontece, porque você raramente atinge um limite de taxa enquanto se desenvolve.

Como testar o tratamento do limite de taxa de requisições

Approach O que você encontra Do que você sente falta
Aguardar produção Limites de taxa do Real Tudo, até que um usuário clique nele
Mockar a API em seus testes ou deixar seu agente de codificação escrever a simulação Se o código lê os cabeçalhos que você simulou Os nomes reais dos cabeçalhos da API, os formatos e o comportamento de redefinição, e a política de novas tentativas do SDK. Seu aplicativo também precisa de uma opção somente de teste para acessar o mock.
Faça chamadas para a API real até atingir o limite Comportamento real Você não pode atingir o limite sob demanda, você usa sua cota real, e alguns limites são redefinidos somente após uma hora
Intercepte o tráfego real do aplicativo e simule o limite URLs reais, um limite e uma janela de tempo que você escolher e os próprios cabeçalhos da API Seu código de forma isolada. Deixe isso para os testes unitários.

Teste no seu aplicativo

Dev Proxy conta as solicitações do aplicativo para as APIs escolhidas, adiciona cabeçalhos de limite de taxa às respostas e responde com 429 quando seu aplicativo ultrapassa o limite, enquanto seu aplicativo continua chamando as URLs reais. Você escolhe o limite e a janela de tempo, para que você possa atingi-lo em um minuto em vez de uma hora.

Para GitHub, baixe a predefinição e inicie o Proxy de Desenvolvimento com ele:

devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"

Para chamadas do Microsoft Graph para o OneDrive e o SharePoint (/drive, /shares, /sites), use a predefinição microsoft-graph-rate-limiting. Para instalar o Dev Proxy, consulte Configurar o Dev Proxy.

Próxima etapa