SquareCloudAPIError.
Os exemplos usam o client de Criando o cliente. app_id é o id de uma das suas aplicações: client.account.me() lista todas.
SquareCloudAPIError
SquareCloudAPIError é uma subclasse de Exception.
str(error) é <METHOD> <path>: HTTP <status> <CODE>: <message>, sem HTTP <status> quando o status é 0 e sem : <message> quando a mensagem está vazia.
Duas falhas não são encapsuladas:
- Uma chave de API vazia ou composta apenas de espaços lança um
ValueErrorno construtor do cliente. - Problemas com arquivos locais lançam um
OSError: um caminho de upload que não pode ser aberto, um arquivo que se torna ilegível no meio do upload, ou um destino dedownload_snapshotem que não é possível escrever.
Códigos do SDK
Códigos são strings
code é uma str simples: o SDK não tem um enum de códigos. A docstring de SquareCloudAPIError lista todos os códigos conhecidos da API. RATE_LIMIT e RATE_LIMIT_EXCEEDED continuam listados ali, marcados como depreciados: a API agora responde RATE_LIMITED para os dois.
A lista de códigos da API cresce. Trate um código desconhecido pelo seu status HTTP:
Códigos de erro da API
Todos os outros códigos vêm da API. A referência de erros da API lista cada um com o status HTTP, o significado e a solução, e cada página do SDK lista os códigos que os seus métodos retornam com mais frequência. Qualquer chamada também pode responder 401ACCESS_DENIED (uma chave inválida), 403 MISSING_SCOPE ou RESOURCE_NOT_ALLOWED (os limites da chave), 429 (veja Rate limits) ou 503 DATABASE_UNAVAILABLE.
Os erros de ai.chat() usam, em vez disso, códigos da OpenAI em minúsculas (access_denied, rate_limit_exceeded, server_overloaded, …). Veja IA.
Novas tentativas
O SDK só tenta novamente o que é seguro repetir, atémax_retries vezes (padrão 2, ou seja, até 3 tentativas):
Ele nunca tenta novamente:
TIMEOUT;- qualquer 429:
RATE_LIMITEDpode ser um bloqueio de cerca de 30 minutos, eKEEP_CALMtambém não é repetido; - outros 5xx;
- erros de IA.
DATABASE_UNAVAILABLE pode chegar depois que uma mutação já foi aplicada, então o SDK não o repete fora de GET. Repita suas próprias mutações idempotentes se precisar.
A espera antes da nova tentativa n (começando em 0) é min(8 s, 500 ms · 2^n) · U(0.5, 1): backoff exponencial com jitter de 50% a 100%. Defina max_retries=0 para desativar as novas tentativas.
Timeouts
timeout (30 s) se aplica por operação de socket (a conexão e cada leitura ou escrita), não à requisição inteira. Veja Timeouts para as chamadas com mínimo de 120 s e as chamadas sem timeout. Um timeout lança TIMEOUT com status 0 e nunca é repetido.
Rate limits
Toda conta tem um limite de requisições a cada 60 segundos, definido pelo seu plano (valores), e algumas rotas têm limites próprios:- 429
RATE_LIMITED: a conta ou a chave de API ultrapassou a sua cota de requisições e fica bloqueada por cerca de 30 minutos, ou um IP que continua enviando chaves inválidas fica bloqueado por um curto período. Também é o limite dos endpoints de rede e deaccount.snapshots. - 429
KEEP_CALM: chamadas demais a uma rota em pouco tempo.
Próximos passos
Referência de erros da API
Todos os códigos de erro, com o significado e a solução.
Limitações e restrições
Os limites de requisições de cada plano.

