Como lidar com a limitação de API

O throttling de APIs é um desafio comum quando se constrói aplicações que dependem de APIs na cloud. Aqui estão as técnicas que pode usar para lidar com isso:

  • Utilize a limitação de taxa. Se a API que usa suportar limitação de taxa, use a informação de limitação que a API envia para garantir que a sua aplicação não ultrapassa os limites da API.
  • Manipule cabeçalhos Retry-After. Algumas APIs enviam um cabeçalho Retry-After em sua resposta quando uma solicitação é limitada. Se for limitado e a resposta tiver um cabeçalho Retry-After, espere pelo tempo especificado antes de enviar outro pedido.
  • Implementar a estratégia de backoff exponencial. Se a API que usas não enviar um cabeçalho Retry-After, implementa um algoritmo de backoff exponencial com jitter aleatório. Depois de cada pedido falhado, espere o dobro antes de tentar novamente e pare após algumas tentativas. Esperar mais tempo ajuda-o a reduzir a carga na API e aumenta as hipóteses de os seus próximos pedidos serem bem-sucedidos.
  • Saiba quando não tentar novamente. Alguns erros semelhantes a throttling significam que a sua quota ou créditos se esgotaram, por exemplo o credit_balance_exhaustedda OpenAI. Tentar novamente essas tentativas não ajuda, por isso pára e diz ao utilizador.
  • Armazenar em cache dados recebidos anteriormente. Respostas em cache da API, especialmente para solicitações que provavelmente retornarão os mesmos dados. O cache ajuda a reduzir o número de chamadas feitas para a API e a permanecer dentro dos limites de taxa.
  • Pedidos em fila. Implemente uma fila para solicitações de API de saída para gerenciar a taxa de solicitações e garantir que os limites de taxa da API não sejam excedidos.
  • Otimize chamadas de API. Busca apenas os dados de que precisas e usa pedidos em lote se a API os suportar. Otimizar ajuda a reduzir o número de requisições e a manter-se dentro dos limites de taxa de requisições.
  • Mostra ao utilizador o que está a acontecer. "Ocupado, a tentar novamente em 5 segundos" é melhor do que um spinner que nunca acaba.

Depois de implementar estas técnicas na sua aplicação, teste se ela lida corretamente com a limitação de taxa. Lógica de retentar que nunca viste executar é lógica de retentar que não sabes que funciona. Para uma comparação de formas de a testar, veja Como testar se a sua aplicação lida com a limitação de taxa.

Experimente na sua app

O Dev Proxy devolve respostas de limitação para as APIs que escolhes, enquanto a tua app continua a chamar os URLs reais e avisa-te quando a tua app tenta novamente antes do Retry-After tempo acabar. Estão disponíveis predefinições para GitHub (github-rate-limiting), OpenAI (openai-throttling), Anthropic (anthropic-throttling) e os pontos de extremidade do Microsoft Graph OneDrive e do SharePoint (microsoft-graph-rate-limiting):

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

Para instalar Dev Proxy, consulte Configurar Dev Proxy.

Próximo passo