Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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-Afterem sua resposta quando uma solicitação é limitada. Se for limitado e a resposta tiver um cabeçalhoRetry-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.