client.apps.snapshots:list(app_id)、create(app_id)、restore(app_id, name, version_id)client.databases.snapshots:list(database_id)、create(database_id)、restore(database_id, name, version_id)
client。app_id 是你的某个应用的 ID:client.account.me() 会列出它们。
列出 snapshot
创建 snapshot
create() 会等待 snapshot 完成(至少 120 秒后才会超时)。较大的 snapshot 可能无法及时完成:此时 API 返回 202,SDK 返回 {'pending': True}。snapshot 会继续生成,并自行出现在 list() 中,通常在 2 分钟以内。否则,它返回 {'pending': False, 'url': ..., 'key': ...}。
恢复 snapshot
restore(id, name, version_id) 接受已列出的 snapshot 的 name 和 version_id。
下载 snapshot
client.download_snapshot(url, dest) 从 snapshot 已签名的 url(来自 list() 或 create())以流的方式将 snapshot 文件写入磁盘,并返回写入的路径。它不会调用 API:API 密钥绝不会被发送到存储主机。内存中不会缓冲任何内容。
dest是一个文件路径,或一个目录(此时保留远程文件名)。以/结尾的路径会被创建为目录。- 数据会先写入一个
.part文件,完成后再重命名,因此下载失败绝不会覆盖之前的文件。 - 整个下载过程没有超时:
timeout限制的是每次读取。
AsyncSquareCloud 时,写法为 await client.download_snapshot(url, dest)。
过期或无效的 URL 会抛出 SquareCloudAPIError,带有存储主机的 HTTP 状态和 UNKNOWN_ERROR。无法写入的目标会抛出 OSError。
账户 snapshot
client.account.snapshots(scope=None) 列出账户的所有 snapshot,也可以只列出 "applications" 或 "databases"(仅限关键字参数)。它需要有效的套餐,并与网络 endpoint 共享速率限制(429 RATE_LIMITED)。
限制
create()限制为每 180 秒调用一次,并受取决于套餐的每日配额限制:超出配额会返回 429DAILY_SNAPSHOTS_LIMIT_REACHED。- 恢复进行期间,删除应用或启动数据库会返回 403
RESTORE_IN_PROGRESS。
后续步骤
数据库
创建和管理数据库。
Snapshot API 参考
这些方法背后的 REST 端点。
用 CLI 管理 snapshot
在终端中完成同样的操作。

