专栏首页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/

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

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

登录 后参与评论
0 条评论

相关文章

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

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

    腾讯云开发者社区
  • 技术拍客约起,云+社区原创视频大奖等你来领

    他来了他来了,他带着活动走来了!各位亲爱的社区创作者老师,想我了吗? 去年的社区活动不知道各位老师参加了多少?拥有了多少社区礼品?又有哪些遗憾没拿到礼品呢?不...

    腾讯QQ大数据
  • 不说话,请直接看福利!

    导语 | 为鼓励广大程序员们更好的学习和分享腾讯云技术,云+社区联合腾讯云免费体验馆及各产品团队举办【玩转腾讯云】征文活动。只要是与「腾讯云」产品相关的原创干...

    腾讯云serverless团队
  • 【最佳实践】巡检项:云直播(CSS)license有效期

    音视频终端 SDK(腾讯云视立方)的腾讯云视立方 License 包括直播推流 License、短视频 License、终端极速高清 License 和腾讯特效...

    tillyyang 杨枫
  • 【玩转腾讯云】征文活动

    分享奖:分享活动海报到微信朋友圈集赞并保留至活动截稿日 5 月 5 日,截图发送给云+社区小编即可获得。

    腾讯云开发者社区
  • 腾讯云区块链TBaaS 3.1.3 版本发布

    腾讯云区块链服务平台(TBaaS)V3.1.3 版本已于近日发布上线,新版本TBaaS服务平台基于Hyperledger Fabric 腾讯增强版引擎推出3种规...

    腾讯云区块链
  • 【2021 Techo Youth 干货整理贴,总有一款你感兴趣】

    感谢同学们3个月的陪伴,小编带你来看看Techo Youth公开课都有哪些精彩内容。

    腾讯智能教育小助手
  • 【技术创作101训练营】第3季获奖名单公布

    「技术创作101训练营」第三季——技术视频 圆满落下帷幕,5位经验分享者主讲技术分享方法论深受好评,大家提交作业也非常热情,感谢大家的积极参与,现正式公布本季训...

    腾讯云开发者社区
  • 重磅 | 腾讯云文字识别6项新服务限时免费公测,4项功能重大升级

    港澳台通行证识别、火车票识别、出租车发票识别、机票行程单识别、定额发票识别、购车发票识别,详细内容见接口文档(https://cloud.tencent.com...

    腾讯云AI
  • 小程序部署发布全流程

    如果你用docker就上传你的docker镜像而不是以下三个文件 将这三个文件放在一个目录下

    代码哈士奇
  • 【玩转云函数】腾讯云函数 Python 依赖安装

    以下内容来自「玩转腾讯云」用户原创文章,已获得授权。 本次作者主要是想利用腾讯云的 Serverless 云函数服务,由于腾讯云函数 Python 的环境只配...

    腾讯云serverless团队
  • 腾讯云开发者社区视频功能正式上线啦!

    云+社区创作中心内测活动在过去的半个月里得到了各位社区创作者的鼎力支持,社区也收获了满满的意见。云+社区创作中心内测活动已经圆满结束!取而代之的是创作中心内容管...

    腾讯云开发者社区
  • 倒计时2天|腾讯云消息队列数据接入平台(Data Import Platform)直播预告

    导语 腾讯云消息队列Kafka推出了数据接入平台(Data Import Platform),构建数据源和数据处理系统间的桥梁。为了广大开发者可以更深入的了解D...

    腾讯云中间件团队
  • 有奖征文丨腾讯云+社区【玩转腾讯云】征文大赛来啦!

    为活跃腾讯云+社区的技术氛围,同时鼓励广大程序员们更好的学习和分享腾讯云技术,云+社区联合腾讯云免费体验馆及各产品团队举办【玩转腾讯云】征文活动。只要是与「腾讯...

    腾讯即时通信IM
  • 【腾讯云双12音视频通信专场】Q4逆袭神器9元起,短信、安全(新)套餐!

    https://cloud.tencent.com/act/cps/redirect?redirect=1019 点击查看

    TCS-F
  • 【技术创作101训练营】第2季获奖名单公布

    「技术创作101训练营」第二季——技术分享 圆满落下帷幕,6位经验分享者主讲技术分享方法论深受好评,大家提交作业也非常热情,感谢大家的积极参与,现正式公布本季训...

    腾讯云开发者社区
  • 利用Python调用云Api批量申请免费证书并下载至本地

    # 本文已被官方文档收录https://cloud.tencent.com/document/product/400/71710

    小宇-xiaoyu
  • 开源应用中心 | 这款经久不衰的CMS内容管理系统,值得你一试!

    Drupal 是使用 PHP 语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和 PHP 开发框架(Framework)共同构成,在GPL2.0...

    Ducan

扫码关注腾讯云开发者

领取腾讯云代金券