Hoe om te gaan met API-throttling

API-throttling is een veelvoorkomende uitdaging wanneer u toepassingen bouwt die afhankelijk zijn van cloud-API's. Hier volgen technieken die u kunt gebruiken om ermee om te gaan:

  • Frequentiebeperking gebruiken. Als de API die u gebruikt ondersteuning biedt voor snelheidsbeperking, gebruikt u de informatie over snelheidsbeperking die de API verzendt om ervoor te zorgen dat uw toepassing de limieten van de API niet overschrijdt.
  • Verwerk Retry-After headers. Sommige API's verzenden een Retry-After header in hun reactie wanneer een verzoek wordt beperkt. Als u wordt gethrottled en het antwoord een Retry-After header heeft, wacht u gedurende de opgegeven tijd voordat u een andere aanvraag verzendt.
  • Exponentieel terugvalmechanisme implementeren. Als de API die u gebruikt geen Retry-After-header verzendt, implementeert u een algoritme voor exponentieel uitstel met willekeurige jitter. Na elke mislukte verzoek wacht u twee keer zo lang voordat u het opnieuw probeert en stopt u na een paar pogingen. Als u langer wacht, vermindert u de belasting van de API en verhoogt u de kans dat uw volgende aanvragen succesvol zijn.
  • Weet wanneer u het niet opnieuw moet proberen. Sommige beperkingsachtige fouten betekenen dat uw quotum of tegoed op zijn, bijvoorbeeld OpenAI's credit_balance_exhausted. Het opnieuw proberen van deze helpt niet, dus stop en vertel de gebruiker.
  • Cache heeft eerder gegevens ontvangen. Cache-antwoorden van de API, vooral voor verzoeken die waarschijnlijk dezelfde gegevens teruggeven. Met caching kunt u het aantal aanroepen naar de API verminderen en binnen de frequentielimieten blijven.
  • Plaats verzoeken in de wachtrij. Implementeer een wachtrij voor uitgaande API-aanvragen om de aanvraagsnelheid te beheren en zorg ervoor dat de frequentielimieten van de API niet worden overschreden.
  • API-aanroepen optimaliseren. Haal alleen de gegevens op die u nodig hebt en gebruik batchaanvragen als de API deze ondersteunt. Door te optimaliseren kunt u het aantal verzoeken verminderen en binnen de ratelimieten blijven.
  • Laat de gebruiker zien wat er gebeurt. "Bezet, opnieuw proberen in 5 seconden" is beter dan een spinner die nooit eindigt.

Nadat u deze technieken in uw toepassing hebt geïmplementeerd, test u of throttling correct wordt verwerkt. Logica voor opnieuw proberen die u nooit hebt zien werken, is logica voor opnieuw proberen waarvan u niet weet dat die werkt. Voor een vergelijking van manieren om dit te testen, zie Hoe u kunt testen of uw app throttling verwerkt.

Probeer het uit in je app

Dev Proxy geeft throttlingreacties terug voor de API's die u kiest, terwijl uw app de echte URL's blijft aanroepen en u laat zien wanneer uw app opnieuw probeert voordat de Retry-After tijd op is. Voorinstellingen zijn beschikbaar voor GitHub (github-rate-limiting), OpenAI (openai-throttling), Anthropic (anthropic-throttling) en Microsoft Graph OneDrive- en SharePoint-eindpunten (microsoft-graph-rate-limiting):

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

Zie Dev Proxy instellen om Dev Proxy te installeren.

Volgende stap