数据API 案例 开发者 关于
掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务
新闻动态 > 媒体报道

QingStor 对象存储发布新版本 Python SDK

QingStor 对象存储近日发布了新版本的 Python SDK ,并开源在 https://github.com/yunify/qingstor-sdk-python。本文将会介绍新版本 Python SDK 的历史背景,变化革新和未来规划。在文章的最后,我们将会展示如何使用新版本的 Python SDK。

历史背景

自 QingStor 对象存储公测时,我们便在 qingcloud-sdk-python 中以面向对象形式的接口提供了 QingStor 对象存储的 Python SDK (为行文方便,下文中将此 SDK 称为旧版 Python SDK)。

该 qingcloud-sdk-python 为手动实现的 SDK,旨在提供所有青云QingCloud 服务的访问。

变化革新

为了加快各语言 SDK 的开发效率,及减小多语言 SDK 的运维成本,我们决定将 SDK 的开发及后期维护自动化。同时,考虑到移动端用户对空间的敏感,我们决定将 QingStor 对象存储的 SDK 与青云QingCloud 其它服务进行分离。

2016 年 12 月 5 日,我们发布了 SDK 自动化生成工具 Snips,及使用 Snips 生成的六种语言 (Go、Ruby、JAVA、Swift、PHP、JS) 的 SDK。

本次发布的 Python SDK (qingstor-sdk-python)就是基于 Snips 进行开发的,(为行文方便,我们在下文中将此 SDK 称为新版 Python SDK ),主要有以下特点:

  • qingstor-sdk-python 不再与原有的 qingcloud-sdk-python 捆绑,可以灵活地应用于更多场景。

  • qingstor-sdk-python 有着更完善的 API 设计,对开发者屏蔽了底层的细节,开发者无需关注具体的请求拼装,只需要调用对应的接口即可。

未来规划

考虑到所有语言 SDK 使用接口的统一,新版 Python SDK 的接口实现选择了非面向对象的形式,即与旧版 Python SDK 不兼容。PS:旧版 Python SDK 除修复 Bug 外,我们将不再维护。

新版 Python SDK 将由 QingStor 直接维护,可享受到最及时的新功能增加, BUG 修复和技术支持。

如何使用新版 Python SDK

使用 SDK 之前请先在青云QingCloud 控制台申请 Access Key。

准备工作

发起请求前首先建立需要初始化服务:

from qingstor.sdk.service.qingstor import QingStor from qingstor.sdk.config import Config config = Config('ACCESS_KEY_ID_EXAMPLE', 'SECRET_ACCESS_KEY_EXAMPLE')service = QingStor(config)

初始化并创建 Bucket,需要指定 Bucket 名称和所在 Zone:

bucket = qingstor.Bucket('test-bucket', 'sh1a') output = bucket.put()

可以使用 dir(output)的形式来获取全部可用的属性。特别的,output.headers是一个包含返回中全部 header 的字典;如果请求失败, output.content将会存储返回的错误信息。

Objects 操作

接下来将会展示创建,下载,删除一个 Object 的全过程:

创建 Object

with open('/tmp/sdk_bin') as f:    output = bucket.put_object(        'example_key', body=f    )

创建一个 Object 时,允许在 body 中传入一个 file like 对象,也支持直接传入一个字符串。上传一个比较大的 Object 时,建议使用 file 对象,避免将全部数据一次性读入内存。

下载 Object

output = bucket.get_object('example_key') with open(local_path, "wb") as f:    for chunk in output.iter_content():        f.write(chunk)

下载一个 Object 时,建议使用 output.iter_content()  来获取文件内容。如果访问 output.content ,将会把全部数据一次性读入内存。

删除 Object

output = bucket.delete_object('example_key')

使用中遇到问题请在项目 Issues 区或者直接提交工单反馈。

原文来自:青云QingCloud

掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务
新闻动态 > 媒体报道
QingStor 对象存储发布新版本 Python SDK
发布:2017-02-07

QingStor 对象存储近日发布了新版本的 Python SDK ,并开源在 https://github.com/yunify/qingstor-sdk-python。本文将会介绍新版本 Python SDK 的历史背景,变化革新和未来规划。在文章的最后,我们将会展示如何使用新版本的 Python SDK。

历史背景

自 QingStor 对象存储公测时,我们便在 qingcloud-sdk-python 中以面向对象形式的接口提供了 QingStor 对象存储的 Python SDK (为行文方便,下文中将此 SDK 称为旧版 Python SDK)。

该 qingcloud-sdk-python 为手动实现的 SDK,旨在提供所有青云QingCloud 服务的访问。

变化革新

为了加快各语言 SDK 的开发效率,及减小多语言 SDK 的运维成本,我们决定将 SDK 的开发及后期维护自动化。同时,考虑到移动端用户对空间的敏感,我们决定将 QingStor 对象存储的 SDK 与青云QingCloud 其它服务进行分离。

2016 年 12 月 5 日,我们发布了 SDK 自动化生成工具 Snips,及使用 Snips 生成的六种语言 (Go、Ruby、JAVA、Swift、PHP、JS) 的 SDK。

本次发布的 Python SDK (qingstor-sdk-python)就是基于 Snips 进行开发的,(为行文方便,我们在下文中将此 SDK 称为新版 Python SDK ),主要有以下特点:

  • qingstor-sdk-python 不再与原有的 qingcloud-sdk-python 捆绑,可以灵活地应用于更多场景。

  • qingstor-sdk-python 有着更完善的 API 设计,对开发者屏蔽了底层的细节,开发者无需关注具体的请求拼装,只需要调用对应的接口即可。

未来规划

考虑到所有语言 SDK 使用接口的统一,新版 Python SDK 的接口实现选择了非面向对象的形式,即与旧版 Python SDK 不兼容。PS:旧版 Python SDK 除修复 Bug 外,我们将不再维护。

新版 Python SDK 将由 QingStor 直接维护,可享受到最及时的新功能增加, BUG 修复和技术支持。

如何使用新版 Python SDK

使用 SDK 之前请先在青云QingCloud 控制台申请 Access Key。

准备工作

发起请求前首先建立需要初始化服务:

from qingstor.sdk.service.qingstor import QingStor from qingstor.sdk.config import Config config = Config('ACCESS_KEY_ID_EXAMPLE', 'SECRET_ACCESS_KEY_EXAMPLE')service = QingStor(config)

初始化并创建 Bucket,需要指定 Bucket 名称和所在 Zone:

bucket = qingstor.Bucket('test-bucket', 'sh1a') output = bucket.put()

可以使用 dir(output)的形式来获取全部可用的属性。特别的,output.headers是一个包含返回中全部 header 的字典;如果请求失败, output.content将会存储返回的错误信息。

Objects 操作

接下来将会展示创建,下载,删除一个 Object 的全过程:

创建 Object

with open('/tmp/sdk_bin') as f:    output = bucket.put_object(        'example_key', body=f    )

创建一个 Object 时,允许在 body 中传入一个 file like 对象,也支持直接传入一个字符串。上传一个比较大的 Object 时,建议使用 file 对象,避免将全部数据一次性读入内存。

下载 Object

output = bucket.get_object('example_key') with open(local_path, "wb") as f:    for chunk in output.iter_content():        f.write(chunk)

下载一个 Object 时,建议使用 output.iter_content()  来获取文件内容。如果访问 output.content ,将会把全部数据一次性读入内存。

删除 Object

output = bucket.delete_object('example_key')

使用中遇到问题请在项目 Issues 区或者直接提交工单反馈。

原文来自:青云QingCloud

电话 0512-88869195