Skip to main content
v5 是一次重写。SDK 现在默认是同步的(并提供 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……)。202 SNAPSHOT_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 会抛出 404 FILE_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:
v5: