Skip to main content
Ogni errore dell’API e di rete solleva un’unica eccezione: SquareCloudAPIError. Gli esempi usano il client di Creare il client. app_id è l’id di una delle tue app: client.account.me() le elenca.

SquareCloudAPIError

SquareCloudAPIError è una sottoclasse di Exception. str(error) è <METHOD> <path>: HTTP <status> <CODE>: <message>, senza HTTP <status> quando lo status è 0 e senza : <message> quando il messaggio è vuoto. Due errori non vengono incapsulati:
  • Una chiave API vuota o composta solo da spazi solleva un ValueError nel costruttore del client.
  • I problemi con i file locali sollevano un OSError: un percorso di upload che non può essere aperto, un file che diventa illeggibile durante l’upload o una destinazione di download_snapshot in cui non è possibile scrivere.

Codici dell’SDK

I codici sono stringhe

code è una semplice str: l’SDK non ha un enum dei codici. La docstring di SquareCloudAPIError elenca ogni codice noto dell’API. RATE_LIMIT e RATE_LIMIT_EXCEEDED sono ancora elencati lì, contrassegnati come deprecati: l’API ora risponde RATE_LIMITED per entrambi. L’elenco dei codici dell’API cresce. Gestisci un codice sconosciuto in base al suo status HTTP:

Codici di errore dell’API

Ogni altro codice proviene dall’API. Il riferimento degli errori dell’API li elenca uno per uno con lo status HTTP, il significato e la soluzione, e ogni pagina degli SDK elenca i codici che i suoi metodi restituiscono più spesso. Qualsiasi chiamata può anche rispondere 401 ACCESS_DENIED (una chiave errata), 403 MISSING_SCOPE o RESOURCE_NOT_ALLOWED (i limiti della chiave), 429 (vedi Rate limit) o 503 DATABASE_UNAVAILABLE. Gli errori di ai.chat() usano invece i codici minuscoli di OpenAI (access_denied, rate_limit_exceeded, server_overloaded, …). Vedi AI.

Retry

L’SDK ripete solo ciò che è sicuro ripetere, fino a max_retries volte (predefinito 2, quindi fino a 3 tentativi): Non ripete mai:
  • TIMEOUT;
  • qualsiasi 429: RATE_LIMITED può essere un blocco di circa 30 minuti, e nemmeno KEEP_CALM viene ripetuto;
  • gli altri 5xx;
  • gli errori dell’AI.
503 DATABASE_UNAVAILABLE può arrivare dopo che una mutazione è già stata applicata, quindi l’SDK non lo ripete al di fuori di GET. Ripeti tu le tue mutazioni idempotenti, se necessario. L’attesa prima del retry n (a partire da 0) è min(8 s, 500 ms · 2^n) · U(0.5, 1): backoff esponenziale con jitter dal 50% al 100%. Imposta max_retries=0 per disattivare i retry.

Timeout

timeout (30 s) si applica per operazione sul socket (la connessione e ogni lettura o scrittura), non all’intera richiesta. Vedi Timeout per le chiamate con una soglia minima di 120 s e quelle senza timeout. Un timeout solleva TIMEOUT con status 0 e non viene mai ripetuto.

Rate limit

Ogni account ha un limite di richieste ogni 60 secondi, stabilito dal suo piano (valori), e alcune route hanno un limite proprio:
  • 429 RATE_LIMITED: l’account o la chiave API ha superato il suo budget di richieste ed è bloccato per circa 30 minuti, oppure un IP che continua a inviare chiavi non valide viene bloccato per un breve periodo. È anche il limite degli endpoint di rete e di account.snapshots.
  • 429 KEEP_CALM: troppe chiamate a una route in poco tempo.
L’SDK non ripete mai un 429. Rallenta e attendi prima di riprovare.

Prossimi passi

Riferimento degli errori dell'API

Ogni codice di errore, con il significato e la soluzione.

Limiti e restrizioni

I limiti di richieste di ogni piano.