本文介绍如何通过 TOS Python SDK 来完成常见的操作,如创建桶、上传对象、下载对象和删除对象等。
多进程场景下需要创建多个 TosClient,不能共享同一个 TosClient,否则会有多进程并发安全问题,可能会导致读写请求数据错乱。
安装 Python
安装 python-devel
您需要安装 python-devel 包。
TOS Python SDK 依赖 crcmod 计算 CRC 校验码,而 crcmod 的 C 扩展模式依赖 python-devel 包中的 Python.h 文件。如果缺少 Python.h,crcmod 的 C 扩展模式安装失败,crcmod 会运行在纯 Python 模式,纯 Python 模式计算 CRC 性能远差于 C 扩展模式 ,会导致上传、下载等操作效率低下。
说明
如果开启 CRC 校验导致上传下载性能差,您可以关闭 CRC64 校验。
验证 crcmod 模式
进入 Python 环境,输入 import crcmod._crcfunext。
- 如果出现以下错误提示,则表明 crcmod 库的 C 扩展模式安装失败,crcmod 库是纯 Python 方式。原因是编译 crcmod 时,_crcfunext.so 依赖 Python.h 文件,而系统中缺少这个头文件,因此 _crcfunext.so 库生成失败。
- 如果没有出现错误提示,则表明 crcmod 库的 C 扩展模式安装成功。
如果出现错误,可以按照以下方式解决:
- 如果您是 Windows 和 Mac OS X 系统,在安装 Python 的时候会将 Python 依赖的头文件一并安装,因此您无需安装 python-devel。
- 如果您是 CentOS、RHEL、Fedora 系统,可以使用以下命令安装:
- 如果您是 Debian、Ubuntu 系统,您可以使用以下命令安装:
客户端通用示例
以下代码是使用 TOS Python SDK 的通用代码模版。
创建桶
存储桶(Bucket)是 TOS 的全局唯一的命名空间,相当于数据的容器,用来储存对象数据。以下代码用于创建一个新存储桶 bucket-test。
上传对象
新建存储桶成功后,可以往存储桶中上传对象,以下代码将字符串上传到 TOS 桶 bucket-test 中。
以下代码用于将指定的 TOS 对象下载到内存中。
列举对象
以下代码用于列举指定桶 bucket-test 中的对象,最多可列举 2000 个。
删除对象
以下代码用于删除指定桶 bucket-test 中的对象 object-test。
关闭 TosClient
TOS Python SDK 默认开启长连接,您创建多个 TosClient 实例访问 TOS 后,可使用以下代码关闭不再使用的 TosClient 实例,释放连接资源。