专栏首页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 条评论
登录 后参与评论

相关文章

  • Django——日志

    2.在views中函数中:定义loggin.getLogger(__name__)对象,用该对象dian.直接调用warning、error五个级别的日志类型即...

    py3study
  • [TensorFlowJS只如初见]实战三·使用TensorFlowJS拟合曲线

    小宋是呢
  • 【图像分割模型】全局特征与局部特征的交响曲—ParseNet

    相信通过前面几篇介绍上下文信息整合的文章,大家已经能够体会到感受野对于分割网络效果的影响有多么巨大了。简单来说,感受野越大,网络所能“看见”的区域就越大,从而能...

    用户1508658
  • 镁客网每周硬科技领域投融资汇总 | 本周融资总量有所下降,未来医疗正在崛起

    镁客网
  • 【图像分割模型】全局特征与局部特征的交响曲—ParseNet

    相信通过前面几篇介绍上下文信息整合的文章,大家已经能够体会到感受野对于分割网络效果的影响有多么巨大了。简单来说,感受野越大,网络所能“看见”的区域就越大,从而能...

    OpenCV学堂
  • 速读原著-Gradle 在大型 Java 项目上的应用

    在 Java 构建工具的世界里,先有了 Ant,然后有了 Maven。Maven 的 CoC[1]、依赖管理以及项目构建规则重用性等特点,让 Maven 几乎成...

    cwl_java
  • 创业公司如何宣布融资,才能有效增加知名度并吸引人才?

    【新智元导读】本文的作者 Tiffany Spencer 曾帮助数百家公司在融资后成功发布有影响力的公告,吸引顶尖人才和潜在收购者的注意力。这篇文章能帮助融资成...

    新智元
  • 客户端ADR配置

    前两天YJ部门有一个使用occi的应用,启动时出现报错,应用日志记录的内容是Occipool error,没有任何其他信息了,后来同事向应用中加了一些日志语句,...

    bisal
  • 【DB笔试面试536】在Oracle中,Oracle 10g和11g告警日志文件的位置在哪里?

    作为一名DBA,必须知道告警日志是什么,在何处。实时的监控数据库的告警日志是必须进行的工作。监控并且根据不同的告警级别,通过邮件或短信发送告警信息给DBA,这可...

    小麦苗DBA宝典
  • 百度熊掌号折腾手记

    熊掌号出来有一段时间了,西枫里博客早早的就申请好了熊掌号。久久没有启用,放置了一段时间后,第一次启用熊掌号,发现博客程序中对缩略图定义的尺寸不符合要求,另外考虑...

    世纪访客

扫码关注云+社区

领取腾讯云代金券