Passa al contenuto principale

Errori, rate limit e affidabilità

Intermedio
What you'll learn
  • Leggere la mappa degli errori HTTP e sapere quali status riprovare e quali correggere
  • Riprovare gli errori transitori con backoff esponenziale e jitter, con un limite massimo
  • Gestire i rate limit con retry-after, smorzamento dei picchi, batching e modelli più economici
  • Isolare il tuo codice dalle deprecazioni e migrazioni dei modelli

Il codice in produzione dialoga con un servizio di rete, quindi deve aspettarsi che qualcosa fallisca. Un po' di struttura qui fa la differenza tra un'integrazione instabile e una affidabile.

La mappa degli errori

Gli status HTTP tipici che gestirai:

StatusSignificatoCosa fare
400Richiesta non validaCorreggi il payload; non riprovare così com'è
401API key errata/mancanteControlla le credenziali
403Non consentitoControlla accesso/permessi
429Rate limit raggiuntoFai backoff e riprova (rispetta retry-after)
500/529Errore del server / sovraccaricoRiprova con backoff
Pro tip
  • Gli SDK li espongono come eccezioni tipizzate, così puoi ramificare in modo pulito anziché analizzare stringhe.

Retry con backoff

Per gli errori transitori (429, 5xx), riprova con backoff esponenziale + jitter, con un limite massimo:

import time, random
for attempt in range(5):
try:
return client.messages.create(...)
except (RateLimitError, APIStatusError) as e:
if attempt == 4 or not should_retry(e):
raise
time.sleep(min(2 ** attempt + random.random(), 30))
Watch out
  • Molti SDK riprovano automaticamente gli errori transitori — conosci il comportamento predefinito del tuo client prima di aggiungere il tuo, altrimenti potresti raddoppiare i retry.

Rate limit

I limiti si applicano per account/tier (richieste e token al minuto). Quando ne raggiungi uno ottieni un 429 con indicazioni temporali. Strategie per restare sotto il tetto:

Guided walkthrough1 of 4
  1. Quando ricevi un 429, leggi l'indicazione temporale nella risposta e attendi quel tempo prima di riprovare.

Vedi Scegliere un modello per scegliere il modello giusto per i passi ad alto volume.

Migrazione dei modelli

Gli ID dei modelli sono datati/versionati e finiscono per essere deprecati. Proteggiti:

Key takeaways
  • 400/401/403 sono colpa tua — correggi la richiesta o le credenziali, non riprovare alla cieca. 429 e 500/529 sono riprovabili.
  • Riprova gli errori transitori con backoff esponenziale + jitter, con un limite massimo (es. min(2 ** attempt + random(), 30)).
  • Su 429: rispetta retry-after, smorza i picchi, raggruppa in batch il lavoro offline e indirizza i passi ad alto volume verso un modello più economico.
  • Leggi gli ID dei modelli dalla configurazione, tieni d'occhio le deprecazioni e riesegui le valutazioni quando migri i modelli.

Mettiti alla prova

0/4
  1. Ricevi un 400 Richiesta non valida. Cosa dovresti fare?
  2. Quali status sono quelli da riprovare con backoff?
  3. Perché aggiungere il jitter al backoff esponenziale?
  4. Quale NON è una strategia di rate limit suggerita?

Avanti