Hantera API-begränsning

API-strypning är en vanlig utmaning när du skapar program som förlitar sig på moln-API:er. Här följer tekniker som du kan använda för att hantera det:

  • Använd hastighetsbegränsning. Om det API som du använder stöder hastighetsbegränsning ska du använda den hastighetsbegränsningsinformation som API:et skickar för att säkerställa att ditt program inte överskrider API:ets gränser.
  • Hantera Retry-After rubriker. Vissa API:er skickar en Retry-After-rubrik i sitt svar när en begäran stryps. Om du blir begränsad och svaret har en Retry-After header väntar du den angivna tiden innan du skickar en annan begäran.
  • Implementera en exponentiell tillbakagångsstrategi. Om det API som du använder inte skickar ett Retry-After-header måste du implementera en exponentiell backoff-algoritm med slumpmässig jitter. Efter varje misslyckad begäran väntar du två gånger så länge innan du försöker igen och stoppar efter några försök. Om du väntar längre kan du minska belastningen på API:et och öka chansen att dina nästa begäranden lyckas.
  • Lär dig när du inte ska försöka igen. Vissa begränsningsliknande fel innebär att din kvot eller dina krediter är slut, till exempel OpenAI:s credit_balance_exhausted. Det hjälper inte att försöka igen, så stoppa och berätta för användaren.
  • Cachelagrade tidigare mottagna data. Cachelagrar svar från API:et, särskilt för begäranden som sannolikt returnerar samma data. cachelagring hjälper dig att minska antalet anrop till API:et och hålla dig inom hastighetsgränserna.
  • Köförfrågningar. Implementera en kö för utgående API-begäranden för att hantera begärandefrekvensen och se till att API:ets hastighetsgränser inte överskrids.
  • Optimera API-anrop. Hämta endast de data som du behöver och använd batchbegäranden om API:et stöder dem. Genom att optimera kan du minska antalet begäranden och hålla dig inom frekvensgränserna.
  • Visa användaren vad som händer. "Upptagen, försöker igen om 5 sekunder" slår en spinnare som aldrig slutar.

När du har implementerat de här teknikerna i applikationen ska du testa att applikationen hanterar strypning korrekt. Logik för återförsök som du aldrig såg köra är logik för återförsök som du inte vet fungerar. En jämförelse av olika sätt att testa det finns i Så här testar du att appen hanterar throttling.

Prova det i din app

Dev Proxy returnerar strypningssvar för de API:er du väljer, medan appen fortsätter att anropa de verkliga URL:erna och meddelar dig när appen försöker igen innan Retry-After tiden är slut. Förinställningar är tillgängliga för GitHub (github-rate-limiting), OpenAI (openai-throttling), Anthropic (anthropic-throttling) och Microsoft Graph OneDrive och SharePoint slutpunkter (microsoft-graph-rate-limiting):

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

Information om hur du installerar Dev Proxy finns i Konfigurera Dev Proxy.

Nästa steg