Come gestire il throttling delle richieste API

La limitazione delle API è una sfida comune quando si creano applicazioni che si basano sulle API cloud. Ecco le tecniche che è possibile usare per gestirlo:

  • Usare la limitazione della frequenza. Se l'API usata supporta la limitazione della frequenza, usare le informazioni sulla limitazione della frequenza inviate dall'API per assicurarsi che l'applicazione non superi i limiti dell'API.
  • Gestire le intestazioni Retry-After. Alcune API inviano un'intestazione di tipo Retry-After nella risposta quando viene applicato un limite a una richiesta. Se si riceve una limitazione e la risposta ha un'intestazione Retry-After, attendere il tempo specificato prima di inviare un'altra richiesta.
  • Implementare il backoff esponenziale. Se l'API usata non invia un'intestazione Retry-After , implementare un algoritmo di backoff esponenziale con jitter casuali. Dopo ogni richiesta non riuscita, attendere il doppio del tempo prima di riprovare e interrompere dopo alcuni tentativi. L'attesa più lunga consente di ridurre il carico sull'API e aumenta le probabilità di successo delle richieste successive.
  • Sapere quando non riprovare. Alcuni errori simili alla limitazione indicano che la quota o i crediti sono esauriti, ad esempio OpenAIcredit_balance_exhausted. Riprovare non aiuta, quindi arrestare e informare l'utente.
  • Memorizzare nella cache i dati ricevuti in precedenza. Memorizzare nella cache le risposte dall'API, in particolare per le richieste che probabilmente restituiscono gli stessi dati. La memorizzazione nella cache consente di ridurre il numero di chiamate effettuate all'API e di rimanere entro i limiti di frequenza.
  • Richieste in coda Implementare una coda per le richieste API in uscita per gestire la frequenza delle richieste e assicurarsi che i limiti di frequenza dell'API non vengano superati.
  • Ottimizzare le chiamate API. Recupera solo i dati necessari e usa le richieste batch se l'API le supporta. L'ottimizzazione consente di ridurre il numero di richieste e di rimanere entro i limiti di frequenza.
  • Mostrare all'utente cosa sta accadendo. "Operazione in corso, riprovare tra 5 secondi" batte uno spinner che non termina mai.

Dopo aver implementato queste tecniche nell'applicazione, verificare che gestisca correttamente il throttling. La logica di ripetizione dei tentativi che non è mai stata eseguita è la logica di ripetizione dei tentativi di cui non sai se funziona. Per un confronto dei modi per testarlo, vedi Come testare che l'app gestisce la limitazione.

Provalo nella tua app

Dev Proxy restituisce risposte di throttling per le API scelte, mentre l'app continua a chiamare gli URL reali e indica quando l'app ritenta prima che scada il tempo Retry-After. I set di impostazioni sono disponibili per gli endpoint 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"

Per installare Dev Proxy, vedere Configurare Dev Proxy.

Passo successivo