专栏首页SmallSO【玩转腾讯云】第三方 Tencent Cloud SDK for Python 社区版正式发布
原创

【玩转腾讯云】第三方 Tencent Cloud SDK for Python 社区版正式发布

今天,我们非常高兴地宣布 Tencent Cloud SDK for Python 社区版正式发布,这是一个由开源社区创建并提供支持的非官方 Tencent Cloud SDK,其适用于 Python 3。

借助 Tencent Cloud SDK for Python,您可以以同步或异步面向对象编程的方式快速、安全地访问 Tencent Cloud API 并将其集成到您的应用程序,而无需关注实现细节。

Tencent Cloud SDK for Python 封面图(请参考文末所述的法律信息)

简述

当我们需要在应用程序中集成或访问 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 官方版本

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 社区版本

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 社区版本支持托管产品客户端实例等便捷功能,这将允许您无需维护一个或多个客户端实例并处理多超线程安全共享等问题,以无服务器云函数产品客户端为例:

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 应用程序,例如:

functions.invoke_async(...)

事实上 Tencent Cloud SDK for Python 社区版本的同步 API 是异步 API 的包装版本,当然通常情况下您无需关注。

代理服务器

Tencent Cloud SDK for Python 社区版本目前支持 HTTP / HTTPS 代理服务器配置,这将允许您设置一个或多个要求身份认证(如果有)的 HTTP / HTTPS 代理服务器并启用它,例如:

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:

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/

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【玩转腾讯云】征文活动获奖名单公布

    由云+社区联合腾讯云免费体验馆及各产品团队举办【玩转腾讯云】征文活动,吸引入驻作者积极参加,非常感谢各位作者的参与。经过评委老师从产品创新性、实用性、可借鉴性、...

    云加社区
  • 聚焦教育、电商、泛娱乐等场景解决方案,腾讯视频云4.0正式发布

    ? 9月11日,2020腾讯全球数字生态大会音视频通信专场上,腾讯云升级发布了视频云4.0,以及视频云、通信云两大产品线的多个新品,通过PaaS平台强大的基础...

    腾讯云音视频
  • 腾云驾雾—腾讯云品牌重塑 - 腾讯ISUX

    腾讯ISUX
  • 国际化大咖空降,腾讯云最具价值专家阵容升级!

    导语 | 腾讯云最具价值专家,简称 TVP(Tencent Cloud Valuable Professional),是腾讯云颁发给第三方技术专家们的一项荣誉认...

    TVP官方团队
  • 通过 Serverless 加速 Blazor WebAssembly | 社区精选文章

    本文为 Serverless 社区成员撰稿。作者杨舜杰,系统架构研发工程师,开源爱好者,.NET开源项目shriek-fx作者。供稿请戳~ 作为一种新型的开发...

    腾讯云serverless团队
  • 【重磅活动】腾讯实时音视频SDK开发大赛火热招募,60万奖品等你来拿!

    ? 腾讯云 Tencent Cloud TRTC SDK 开发应用大赛 欢迎创造奇迹的你 ? 1 大赛介绍 TRTC(Tencent Real-Time Co...

    腾讯即时通信IM
  • 原生应用 “0” 代码改造,无侵入接入,纵享丝滑般上云体验!

    热衷于云原生和开源技术,在容器、Service Mesh、消息队列、区块链等领域拥有丰富经验,目前致力于Service Mesh 技术的落地和推广

    腾讯云中间件团队
  • 整装待发 QTA UI自动化测试框架迎来大更新

    QTA是什么 QTA是一个跨平台的测试自动化工具,适用于后台、原生或混合型客户端应用的测试。在腾讯内部,QTA是腾讯元老级的自动化测试项目,从研发至今已走过8...

    腾讯开源
  • 1月容器技术产品月报 | 留言有奖

    ? 2021年1月 ? ? VOL:09 ? ? ? ? 腾小云告诉你最前线的产品新特性, 总有一款让你心动~ ? 云说新品 ? 容器产品新特性 12月上新 ...

    腾讯云原生

扫码关注云+社区

领取腾讯云代金券