SquareCloudAPIError。
示例使用创建客户端中的 client。app_id 是你的某个应用的 ID:client.account.me() 会列出它们。
SquareCloudAPIError
SquareCloudAPIError 是 Exception 的子类。
str(error) 的格式为 <METHOD> <path>: HTTP <status> <CODE>: <message>;状态为 0 时不含 HTTP <status>,消息为空时不含 : <message>。
有两种失败不会被包装:
- 空的或仅含空白字符的 API 密钥会在客户端构造函数中抛出
ValueError。 - 本地文件问题会抛出
OSError:无法打开的上传路径、在上传过程中变得不可读的文件,或无法写入的download_snapshot目标。
SDK 代码
代码是字符串
code 是普通的 str:SDK 没有代码枚举。SquareCloudAPIError 的 docstring 列出了所有已知的 API 代码。RATE_LIMIT 和 RATE_LIMIT_EXCEEDED 仍在其中,并被标记为已弃用:API 现在对这两者都返回 RATE_LIMITED。
API 代码的列表会不断增加。请根据 HTTP 状态处理未知代码:
API 错误代码
其他所有代码都来自 API。API 错误参考列出了每个代码及其 HTTP 状态、含义和解决方法,每个 SDK 页面也列出了其方法最常返回的代码。任何调用还可能返回 401ACCESS_DENIED(密钥有误)、403 MISSING_SCOPE 或 RESOURCE_NOT_ALLOWED(密钥的限制)、429(参见速率限制)或 503 DATABASE_UNAVAILABLE。
ai.chat() 的错误则使用小写的 OpenAI 代码(access_denied、rate_limit_exceeded、server_overloaded……)。参见 AI。
重试
SDK 只重试可以安全重复的操作,最多max_retries 次(默认 2,即最多 3 次尝试):
它从不重试:
TIMEOUT;- 任何 429:
RATE_LIMITED可能是持续约 30 分钟的封锁,KEEP_CALM也不会重试; - 其他 5xx;
- AI 错误。
DATABASE_UNAVAILABLE 可能在变更操作已被应用之后才到达,因此 SDK 不会在 GET 以外重试它。如有需要,请自行重试你的幂等变更操作。
第 n 次重试(从 0 开始)之前的等待时间为 min(8 s, 500 ms · 2^n) · U(0.5, 1):带有 50% 到 100% 抖动的指数退避。设置 max_retries=0 可关闭重试。
超时
timeout(30 秒)按每次套接字操作(连接以及每次读或写)计算,而不是针对整个请求。关于具有 120 秒下限的调用以及没有超时的调用,请参见超时。超时会抛出状态为 0 的 TIMEOUT,且从不重试。
速率限制
每个账户都有每 60 秒的请求数限制,由其套餐决定(具体数值),部分路由还有各自的限制:- 429
RATE_LIMITED:账户或 API 密钥超出了请求配额,会被封锁约 30 分钟;或者某个 IP 持续发送无效密钥,会被短时间封锁。也是网络 endpoint 和account.snapshots的限制。 - 429
KEEP_CALM:短时间内对同一路由的调用过多。
后续步骤
API 错误参考
所有错误代码及其含义和解决方法。
限制与约束
各套餐的请求限制。

