今天,我们非常高兴地宣布 Tencent Cloud SDK for Python 社区版正式发布,这是一个由开源社区创建并提供支持的非官方 Tencent Cloud SDK,其适用于 Python 3。
借助 Tencent Cloud SDK for Python,您可以以同步或异步面向对象编程的方式快速、安全地访问 Tencent Cloud API 并将其集成到您的应用程序,而无需关注实现细节。
简述
当我们需要在应用程序中集成或访问 Tencent Cloud 产品功能时,或许首先想到的解决方案是在相关流程中使用 Tencent Cloud API 实现。遗憾的是,直接使用 Tencent Cloud API 需要我们理解请求结构、公共参数、接口鉴权、访问凭据和复杂的签名方法等,这将显著延长我们的工作周期。
为什么选择社区版
或许您已经想到,将 Tencent Cloud SDK 集成到应用程序是一个不错的选择,因为这将允许您在不关注公共参数、接口鉴权和复杂签名方法的情况下使用 Tencent Cloud API 访问 Tencent Cloud 产品。
当您开始将 Tencent Cloud SDK 官方版本集成到应用程序时,您会发现所集成的 SDK 实现和用例非常糟糕,其中充斥着大量重复、混乱的垃圾代码。这将使应用程序编写体验变得糟糕,且降低应用程序代码的可维护性。
那么...为什么选择社区版本?以无服务器云函数产品为例,在下文中我们将通过两段 Python 示例代码分别向您演示如何使用 Tencent Cloud SDK for Python 官方版本和社区版本调用一个无服务器云函数:
Tencent Cloud SDK 官方版本
代码语言:python代码运行次数:0复制from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.scf.v20180416 import scf_client, models
try:
cred = credential.Credential("<your secret-id>", "<your secret-key>")
httpProfile = HttpProfile()
httpProfile.endpoint = "scf.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = scf_client.ScfClient(cred, "ap-shanghai", clientProfile)
req = models.InvokeRequest()
params = '{"FunctionName":"hello","InvocationType":"RequestResponse","Namespace":"default"}'
req.from_json_string(params)
resp = client.Invoke(req)
print(resp.to_json_string())
except TencentCloudSDKException as err:
print(err)
Tencent Cloud SDK 社区版本
代码语言:python代码运行次数:0复制from tencent.cloud.serverless import functions
print(functions.invoke('hello', region_id = 'ap-shanghai'))
从上文的两段 Python 示例代码中我们可以观察到显著差异,相信这便是通常情况下选择 Tencent Cloud SDK for Python 社区版本最重要的理由。当然,对于无服务器云函数的调用,Tencent Cloud SDK for Python 社区版本还有更多高级特性和玩法,详情请参阅在线技术文档中无服务器云函数调用最佳实践篇。
值得注意的是,在上文示例代码中 Tencent Cloud SDK for Python 官方版本和社区版本最终所打印的输出内容是不一致的,社区版本将直接打印无服务器云函数的实际返回值;官方版本将打印 Tencent Cloud API 响应结构的 JSON 字符串,而通常情况下我们可能并不关心 Tencent Cloud API 响应结构中除无服务器云函数返回值以外的其他数据。
社区版的优势
Tencent Cloud SDK for Python 社区版本在设计上没有强主张,这意味着您可以根据需求由高到低渐进地使用 SDK,而无需关注实现细节。在下文中我们将为您介绍使用 Tencent Cloud SDK for Python 社区版本的优势。
简单易维护
Tencent Cloud SDK for Python 社区版本提供了许多高层 API 和数据类型,这将允许您以常见的面向对象编程的方式访问特定的 Tencent Cloud 产品,而无需关注 Tencent Cloud API 实施细节。
同时,Tencent Cloud SDK for Python 社区版本支持托管产品客户端实例等便捷功能,这将允许您无需维护一个或多个客户端实例并处理多超线程安全共享等问题,以无服务器云函数产品客户端为例:
代码语言:python代码运行次数:0复制client = functions.fetch_client()
更多细节请参考 Tencent Cloud SDK for Python 社区版本在线技术文档:fetch_client 函数
在线和离线文档
Tencent Cloud SDK for Python 社区版本提供较为详细的在线技术文档,其中包含 API 文档、最佳实践篇和安装与卸载指导等内容。值得注意的是,每一个 API 函数和方法均包含功能、参数、返回值和异常描述。
异步 I/O 编程
与 Tencent Cloud SDK for Python 官方版本不同,社区版本支持以异步面向对象编程的方式使用,几乎所有会引起 I/O 阻塞的 API 均同时支持同步和异步版本。异步编程方式可以编写 I/O 性能更好的 Python 应用程序,例如:
代码语言:python代码运行次数:0复制functions.invoke_async(...)
事实上 Tencent Cloud SDK for Python 社区版本的同步 API 是异步 API 的包装版本,当然通常情况下您无需关注。
代理服务器
Tencent Cloud SDK for Python 社区版本目前支持 HTTP / HTTPS 代理服务器配置,这将允许您设置一个或多个要求身份认证(如果有)的 HTTP / HTTPS 代理服务器并启用它,例如:
代码语言:python代码运行次数:0复制functions.fetch_client().set_access_proxies(...)
当然,您也可以在相关产品客户端实例化时设置一个或多个代理服务器配置。
更多细节请参考 Tencent Cloud SDK for Python 社区版本在线技术文档:Proxies 类
错误管理与重试
Tencent Cloud SDK for Python 社区版本包含一个名为错误管理器的高级特性。借助错误管理器功能,您可以快速实现对感兴趣的客户端错误处理流程和方式的控制。利用错误管理器所提供的错误处理程序链,您可以编写一个或多个错误处理器函数并对符合特定条件的错误进行处理流程和方式控制,这将进一步增强应用程序可靠性。
目前 Tencent Cloud SDK for Python 社区版本内置实现了常见的错误处理方式,分别是忽略、立即重试、退避重试和引发异常等,默认情况下错误管理器将主动退避重试一些常见的 Tencent Cloud API 错误。
更多细节请参考 Tencent Cloud SDK for Python 社区版本在线技术文档:ErrorManager 类
访问凭据管理
Tencent Cloud SDK for Python 社区版本支持多种访问凭据类型,例如硬编码凭据、环境凭据或文件凭据等。在特定运行环境下,Tencent Cloud SDK for Python 社区版本将自动查找并使用对应的访问凭据类型,而无需将访问凭据的 Secret ID 和 Secret Key 硬编码到应用程序。
例如如果您的应用程序是一个无服务器云函数,且该无服务器云函数已配置有效的运行角色,Tencent Cloud SDK for Python 社区版本将自动查找并使用无服务器云函数运行环境中临时申请的访问凭据,我们将其称之为环境凭据。
更多细节请参考 Tencent Cloud SDK for Python 社区版本在线技术文档:《选择最佳的访问凭据类型》
支持的云产品
Tencent Cloud SDK for Python 社区版本的 Python 软件包分为两种类型,分别是 Core 和 Component。每一个 Component 均基于 Core 实现,其包含对一种 Tencent Cloud 产品的支持。目前已发布的 Component 有:
- 无服务器云函数
- 无服务器数据库
通用产品客户端
您需要访问的 Tencent Cloud 产品暂时没有提供 Component 支持?无需担心,Tencent Cloud SDK for Python 社区版本内置提供通用产品客户端。借助通用产品客户端,您依然可以以同步或异步面向对象编程的方式访问特定 Tencent Cloud 产品的 Tencent Cloud API,其仍然包含包括但不限于异步 I/O 编程、代理服务器配置、访问凭据管理等功能。
与 Component 所提供的产品客户端的不同之处在于,使用通用产品客户端需要您了解目标 Tencent Cloud API 的输入、输出参数和数据结构,其他细节仍无需关注。
在下文中我们将通过一段 Python 代码向您演示如何使用通用产品客户端列出 Tencent Cloud 上海数据中心园区正在运营的可用区唯一标识符,这将使用 Tencent Cloud 的云服务器(CVM)产品提供的名为 DescribeZones 的 Tencent Cloud API:
代码语言:python代码运行次数:0复制from tencent.cloud.core import client
client = client.UniversalClient('cvm')
action_result: dict = client.action(
region_id = 'ap-shanghai',
action_id = 'DescribeZones',
action_version = '2017-03-12'
)
for zone_info in action_result['ZoneSet']:
print(zone_info['Zone'])
贡献 Component
目前我们正在制定 Component 编码约定,欢迎您通过 Tencent Cloud SDK for Python 社区版本位于 GitHub 的 Issues 跟踪器提出 Component 要求或建议,也非常欢迎提交 Pull Request 做出贡献。
最后
如果您的应用程序正在使用 Tencent Cloud SDK for Python 官方版本,欢迎您尝试迁移到社区版本并提供反馈。更多细节请参阅 Tencent Cloud SDK for Python 的在线技术文档、GitHub 仓库和 PyPI 主页。
GitHub 仓库:https://github.com/nobody-night/tencent-cloud-sdk-python
PyPI 主页:https://pypi.org/project/tencent-cloud-sdk/
在线技术文档:https://smallso.gitbook.io/tencent-cloud-sdk/
Issues 跟踪器:https://github.com/nobody-night/tencent-cloud-sdk-python/issues
法律信息
本文章上所使用的文章封面图为 wallpapershome.com 所有,版权所有者的联系方式是 https://wallpapershome.com/contact-us/。