await 外观层),没有任何依赖,按资源对方法进行分组,返回普通字典(TypedDict),并且只抛出一种异常类型。它涵盖了 Square Cloud API 的全部 67 个操作。
概览
构造和选项
逐个方法对照
Application 的方法对应于带 ID 的相同调用:app.logs() → client.apps.logs(app.id),app.files_list(path) → client.apps.files.list(app.id, path),依此类推。
类型
响应是squarecloud.types 中的 TypedDict,命名与 JS 和 Go SDK 一致:Account、User、Plan、AppSummary、DatabaseSummary、App、AppCreated、StatusListItem、RuntimeStats、MetricPoint、AppDomain、LoadBalancers、DeployEvent、DeployCurrent、DeployRepository、LinkedRepository、EnvVars、FileEntry、Snapshot、SnapshotCreated、SnapshotScope、AnalyticsFilters、NetworkAnalytics、NetworkErrors、NetworkLog、NetworkPerformance、DNSRecord、Database、DatabaseCreated、DatabaseType、Workspace、WorkspaceCreated、WorkspaceGroup、ServiceStatus、ServiceEntry、ChatRequest、ChatMessage、ChatCompletion、RealtimeEvent、RealtimeStatus。它们取代了 v4 的 data/* dataclass(UserData、StatusData、AppData……)。squarecloud.Response 现在是传输层的响应协议(参见自定义传输层);v4 中由变更操作返回的 Response 已不复存在,变更操作现在返回 None。
错误
str(e) 的格式为 '<METHOD> <path>: HTTP <status> <CODE>: <message>';状态为 0 时不含 HTTP <status>,消息为空时不含 : <message>。当服务器只发送了代码时,e.message 为 ''。
行为变更
- 可选修饰参数只能以关键字形式传入:
account.snapshots(scope=)、apps.status_all(workspace_id=)、apps.status(id, raw=)、databases.status(id, raw=)、apps.commit(id, file, path=, filename=)、apps.network.errors(..., include_4xx=)、apps.network.analytics(...)的过滤器、databases.update(id, name=, ram=)和databases.create(name, type=, version=, memory=)。apps.files.list的可选参数path仍可按位置传入。 - 2xx 的
{"status": "error"}响应体会抛出异常。应用和数据库的启动/停止被拒绝时返回 409,且只带有代码(CONTAINER_ALREADY_STARTED、ACTION_FAILED……)。202SNAPSHOT_PROCESSING会返回{'pending': True}而不是抛出异常:请轮询list,切勿再次调用create。 - 未设置的可选查询值(以及
'')会被省略,而不是被发送。 - 字符串结果绝不会是
None:reset_credentials(id, 'certificate')和已移除的 webhook 返回''。 apps.files.write将str以文本发送,将bytes以 base64 编码发送;空内容会创建一个空文件;超过 1 MiB 的内容会在没有超时的情况下发送。apps.files.read始终请求 base64,并返回解码后的bytes。- 对不存在的目录调用
apps.files.list会抛出 404FILE_NOT_FOUND。 - 503
DATABASE_UNAVAILABLE仅在GET上重试,因为它可能在变更操作已被应用之后才触发;是否重试幂等的变更操作由调用方决定。 - 实时流产出
{'event', 'data', 'id', ...}事件,最多连续重新打开 3 次,每 5.5 秒打开一次,并在打开失败时抛出异常。
异步
v4 仅支持异步。在 v5 中,SquareCloud 是同步的,AsyncSquareCloud 是 await 外观层:分组和方法相同,每次调用都在 asyncio.to_thread 中运行,因此事件循环永远不会被阻塞。实时流改为使用 async for(由一个读取线程向事件循环提供数据);请通过 async with 或 close() 关闭它。
v4:
后续步骤
客户端
安装 SDK 并创建客户端。
错误
错误类、重试和速率限制。

