Como lidar com a limitação de taxa da API

A limitação de taxa da API é um desafio comum quando você cria aplicativos que dependem de APIs de nuvem. Aqui estão as técnicas que você pode usar para lidar com isso:

  • Use limitação de velocidade. Se a API que você usa suporta limitação de taxa, use as informações sobre limite de taxa enviadas pela API para garantir que seu aplicativo não exceda os limites da API.
  • Lidar com cabeçalhos Retry-After. Algumas APIs enviam um cabeçalho Retry-After na resposta quando uma solicitação é limitada. Se você for limitado e a resposta tiver o cabeçalho Retry-After, aguarde o tempo especificado antes de enviar outra solicitação.
  • Implementa a retirada exponencial. Se a API usada não enviar um cabeçalho Retry-After, implemente um algoritmo de backoff exponencial com jitter aleatório. Após cada solicitação com falha, aguarde o dobro do tempo antes de tentar novamente e pare após algumas tentativas. Esperar mais tempo ajuda você a reduzir a carga na API e aumenta as chances de suas próximas solicitações serem bem-sucedidas.
  • Saiba quando não tentar novamente. Alguns erros semelhantes à limitação significam que sua cota ou créditos se esgotaram, por exemplo, OpenAI's credit_balance_exhausted. Tentar novamente isso não ajuda, então pare e diga ao usuário.
  • Armazenar dados recebidos anteriormente no cache. Respostas de cache da API, especialmente para solicitações que provavelmente retornarão os mesmos dados. O cache ajuda você a reduzir o número de chamadas feitas à API e permanecer dentro dos limites de taxa.
  • Coloque as solicitações na fila. Implemente uma fila para solicitações de API de saída para gerenciar a taxa de solicitação e garantir que os limites de taxa da API não sejam excedidos.
  • Otimize as chamadas à API. Busque apenas os dados necessários e use solicitações em lote se a API der suporte a eles. A otimização ajuda você a reduzir o número de solicitações e permanecer dentro dos limites de taxa.
  • Mostrar ao usuário o que está acontecendo. "Ocupado, tentando novamente em 5 segundos" bate um spinner que nunca termina.

Depois de implementar essas técnicas em seu aplicativo, teste se ele lida com a limitação de taxa corretamente. A lógica de repetição que você nunca viu executar é a lógica de repetição que você não sabe que funciona. Para obter uma comparação de maneiras de testá-lo, consulte Como testar se seu aplicativo lida com a limitação de taxa.

Teste no seu aplicativo

Dev Proxy retorna respostas de limitação de taxa para as APIs escolhidas, enquanto seu aplicativo continua chamando as URLs reais e informa quando seu aplicativo tenta novamente antes do Retry-After tempo acabar. As predefinições estão disponíveis para endpoints do GitHub (github-rate-limiting), OpenAI (openai-throttling), Anthropic (anthropic-throttling) e Microsoft Graph OneDrive e SharePoint (microsoft-graph-rate-limiting):

devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"

Para instalar o Dev Proxy, consulte Configurar o Dev Proxy.

Próxima etapa