Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
本节将通过实践演示引导您进一步了解如何在应用程序中集成并使用 Tencent Cloud SDK for Python
借助 Tencent Cloud SDK for Python,您可以以同步或异步面向对象编程的方式快速实现与 Tencent Cloud 产品的功能交互。
在本节中我们将通过多个完整的示例向您演示如何在实际应用场景的应用程序中集成 Tencent Cloud SDK for Python 并使用相关高级特性以完成一些操作逻辑。
请注意,在阅读实际应用场景最佳实践篇之前,请确保:
已安装 Python 3.6 或更高版本。
已安装 Tencent Cloud SDK for Python 最新稳定版本。
已阅读并理解 Tencent Cloud SDK for Python 入门篇。
已通过 Tencent Cloud 控制台创建适用于您账户的 Tencent Cloud API 访问凭据。
借助 Tencent Cloud SDK for Python,您可以以面向对象编程的方式创建和管理无服务器数据库资源。
与传统数据库资源不同,无服务器数据库是一款按需分配资源的数据库产品。无服务器数据库将根据您的请求量、实际存储数据大小来自动分配资源,无需关注底层计算和存储资源,开箱即用,仅需为实际使用的资源量付费。无服务器数据库有哪些优势?
在向下阅读本文之前,您需要确保已阅读 入门篇 并理解一些基本概念。
在本文中我们将向您详细介绍,如何使用 Tencent Cloud SDK for Python 提供的无服务器数据库产品客户端以面向对象编程的方式快速创建并管理一个或多个无服务器数据库实例。
在下文中,我们将通过几个连续的步骤向您演示:
在创建无服务器数据库资源前,我们需要导入 Tencent Cloud SDK for Python 相关命名空间和模块:
请注意,这需要您的运行环境已安装 tencent-cloud-sdk-serverless-database
组件包,通常情况下该组件包包括在最新的 Tencent Cloud SDK 中。
接着,我们需要创建一个无服务器数据库产品客户端,这将允许我们访问无服务器数据库产品:
在上文示例代码中,我们使用 fetch_client
函数获得一个与当前超线程相关的无服务器数据库产品客户端实例。因便捷性和安全性原因,该函数仅支持使用环境凭据和文件凭据:
现在,我们需要在 ap-shanghai-2
数据中心可用区创建一个名为 default
的无服务器数据库实例:
在上文示例代码中,我们创建的无服务器数据库配置如下:
参数 instance_configure
的数据类型为 InstanceConfigure,该数据类型包含所创建的无服务器数据库实例配置信息。
最后,我们打印输出所创建的无服务器数据库实例的唯一标识符:
与无服务器数据库实例名称不同,无服务器数据库实例唯一标识符是不可重复的。
借助 Tencent Cloud SDK for Python 所提供的无服务器数据库产品客户端,我们可以非常方便地列出给定数据中心园区内已创建的无服务器数据库实例的详细信息:
变量 info
的数据类型为 InstanceInfo,其包含一个无服务器数据库实例的详细信息。
有时候我们的业务或工作负载可能因开发调试等原因,需要通过公网访问无服务器数据库实例。默认设置下无服务器数据库实例不允许通过公网访问,但我们可以轻松改变这一设置:
在上文示例代码中,参数 instance_extranet
代表给定无服务器数据库实例是否允许通过公网访问,如果该参数被忽略,默认为 True
。
设置成功后,您需要通过调用实例方法 list_instances
检索公网访问地址。
一个无服务器数据库实例已不再使用?没关系,我们可以利用 Tencent Cloud SDK for Python 所提供的无服务器数据库产品客户端将其快速删除(销毁):
之后,被删除的无服务器数据库实例资源将在短时间内销毁回收。
配置项
成员
值
数据库版本
database.version
10.4
数据库字符集
database.charset
UTF-8
实例私有网络
vpc.id
vpc-f7qfb64q
实例私有网络子网
vpc.subnet_id
subnet-aieh8myj
本页将向您介绍 Tencent Cloud SDK for Python 目前已支持的访问凭据类型
通常情况下,我们会选择最简单、直观的在应用程序源代码中硬编码访问凭据信息,这种方式并不便于访问凭据的管理和定期轮换,也不利于组织复杂的应用程序项目源代码。我们将该方式称之为默认访问凭据类型,其源代码形态通常为:
在下文中我们将向您介绍 Tencent Cloud SDK for Python 中所支持的其他访问凭据类型,您可以根据应用程序需求选择最佳的实践方式。
环境凭据是指在特定应用程序运行环境中由环境变量所存储的访问凭据信息,Tencent Cloud SDK for Python 支持自动查找并使用有效的环境凭据作为客户端的访问凭据。
环境凭据类型由命名空间和模块 tencent.cloud.auth.credentials
中类 EnvironmentalCredentials
代表,该类的签名如下:
继承:tencent.cloud.auth.credentials.Credentials
类
当您选择并使用环境凭据时,Tencent Cloud SDK for Python 将尝试在当前运行环境的环境变量中查找默认名为 TENCENTCLOUD_SECRETID
和 TENCENTCLOUD_SECRETKEY
的环境变量值,对应访问凭据的 Secret ID 和 Secret Key 字段。
在下文中我们将通过 Python 代码片段向您演示如何使用环境凭据实例化无服务器云函数产品客户端:
当您在 Tencent Cloud 无服务器云函数产品所运行的无服务器云函数代码中使用时,您可以为该无服务器云函数配置 运行角色。当无服务器云函数运行时将自动为其分配非持久临时访问凭据,该访问凭据将被 Tencent Cloud SDK for Python 视为环境凭据。
如果运行环境中存储访问凭据的环境变量名称与默认查找的环境变量名称不同,您可以手动指定:
现在 Tencent Cloud SDK for Python 将尝试在当前运行环境的环境变量中查找名为 MY_SECRETID
和 MY_SECRETKEY
的环境变量值。
环境凭据支持隐式使用,这意味着若当前应用程序的运行环境符合环境凭据的所有默认行为,您将无需明确指定使用环境凭据:
请注意,如果当前应用程序运行环境中无法找到符合条件的环境凭据,将引发 EnvironmentError 异常。
没错,Tencent Cloud SDK for Python 不但支持环境凭据,也支持文件凭据。顾名思义,文件凭据是指将有效的访问凭据信息以 JSON 序列化文本的形式存储在文件上,Tencent Cloud SDK for Python 支持自动查找并使用有效的文件凭据作为客户端的访问凭据。
环境凭据类型由命名空间和模块 tencent.cloud.auth.credentials
中类 FileCredentials
代表,该类的签名如下:
继承:tencent.cloud.auth.credentials.Credentials
类
当您选择并使用文件凭据时,Tencent Cloud SDK for Python 将尝试在当前运行目录下查找名为 secret.json
的 JSON 序列化文本文件,其文件内容形态如下:
其中,JSON 属性 secretId
和 secretKey
分别对应访问凭据的 Secret ID 和 Secret Key 字段。
在下文中我们将通过 Python 代码片段向您演示如何使用文件凭据实例化无服务器云函数产品客户端:
请注意,文件凭据类型与环境凭据类型的实例化默认参数值不同,文件凭据类型实例化时必须明确指定包含访问凭据的 JSON 序列化文本文件的路径。
与环境凭据相同,文件凭据也支持隐式使用,这意味着若当前应用程序的文件环境符合文件凭据的所有默认行为,您将无需明确指定使用环境凭据,Tencent Cloud SDK for Python 将尝试在应用程序当前工作目录下查找名为 secret.json
的 JSON 序列化文本文件:
请注意,如果当前应用程序文件环境中无法找到符合条件的文件凭据,将引发 FileNotFoundError 异常;如果文件凭据中缺少必要的属性,将引发 KeyError 异常。
在上文中我们向您介绍了 Tencent Cloud SDK for Python 最新版本目前已支持的访问凭据类型,如果您决定隐式使用访问凭据类型,Tencent Cloud SDK for Python 将自动根据以下优先级查找:
默认凭据
文件凭据
环境凭据
查找规则为若前一项访问凭据类型已找到,则终止其他类型的访问凭据查找。例如当前应用程序运行环境中同时满足文件凭据和环境凭据,根据访问凭据类型优先级,文件凭据将优先被使用。
根据您的应用场景,Tencent Cloud SDK for Python 建议您选择的访问凭据类型如下:
建议您根据应用程序所需要访问的 Tencent Cloud 产品资源分别创建适用于您 Tencent Cloud 账户的最小权限访问凭据。除非必要,否则访问凭据不应具有资源完全访问权限。
本页将向您介绍并演示如何使用 Tencent Cloud SDK for Python 轻松实现无服务器云函数间调用
通常情况下,我们可能需要在一个无服务器云函数中依赖另一个或多个无服务器云函数。通过在无服务器云函数中集成并使用 Tencent Cloud SDK for Python,无服务器云函数间调用将非常易于实现。
在下文中我们将通过一个简单的应用场景向您进一步介绍并演示如何使用 Tencent Cloud SDK for Python 快速实现在无服务器云函数之间相互调用。
假定我们在数据中心 ap-shanghai
的命名空间 default
中拥有 2 个已创建就绪的无服务器云函数,其名称分别是 hello
和 addend
。这些无服务器云函数的配置如下:
在该场景中,我们要求在无服务器云函数 hello
中以友好且可供人类直接阅读的字符串返回一次加法运算的结果,其加法运算过程要求在无服务器云函数 addend
中实现。
在下文中,我们将通过几个步骤向您演示编写符合当前场景要求的代码示例:
addend
函数首先,我们需要先编写无服务器云函数 hello
的依赖函数 addend
的函数源代码:
在无服务器云函数 addend
中,我们尝试获取当前函数调用事件中的字段 value1
和 value2
的值,并将字段 value1
和 value2
的值相加后返回,期望相加值类型为整形。
hello
函数接着,我们需要编写依赖无服务器云函数 addend
的主函数 hello
的函数源代码:
首先我们需要在无服务器云函数 hello
中导入 Tencent Cloud SDK for Python 相关命名空间和模块:
接着我们需要为无服务器云函数 hello
编写入口函数。
在入口函数中我们将尝试使用 Tencent Cloud SDK for Python 所提供的无服务器云函数间调用功能调用无服务器云函数 addend
完成一次加法运算并获取结果:
在无服务器云函数 hello
中,我们尝试使用 Tencent Cloud SDK for Python 函数间调用功能调用无服务器云函数 addend
计算数值 10
和 20
的相加结果并以人类易读的描述性字符串返回。
如果无服务器云函数 addend
运行出错,则返回错误原因的描述性字符串。
请注意,无服务器云函数间调用仅支持已配置 运行角色 的无服务器云函数发起调用。
现在我们尝试运行无服务器云函数 hello
,如果一切正常其运行结果为:
在上文的演示代码中我们导入 Tencent Cloud SDK for Python 的无服务器云函数产品软件包,使用 functions.invoke
函数完成无服务器云函数之间相互调用的工作。
您或许已经注意到,无服务器云函数间调用的方式不需要您维护一个访问凭据和无服务器云函数产品客户端实例,这是因为 Tencent Cloud SDK for Python 的无服务器云函数间调用机制已代您维护一个有效的临时访问凭据和产品客户端实例。
当您初次使用 functions.invoke
或 functions.invoke_async
函数时,Tencent Cloud SDK for Python 会尝试在内部实例化一个无服务器云函数产品客户端并搜寻采用非持久环境凭据。
当无服务器云函数已配置具有有效访问权限的 运行角色 时,其函数在运行代码之前将自动申请并获得一个非持久性的临时访问凭据并将其存储在当前运行环境的环境变量中,这就是环境凭据的由来。
如果当前无服务器云函数已配置 运行角色,实例化通用或产品客户端时允许不提供访问凭据,此时 Tencent Cloud SDK for Python 将自动搜寻并采用环境凭据。
并且,函数 functions.invoke
或 functions.invoke_async
在内部将依赖无服务器云函数产品客户端的 easy_invoke
实例方法,其具有与依赖方法相同的行为和返回值。
请注意,使用无服务器云函数间调用方式调用的目标无服务器云函数必须与当前无服务器云函数所在数据中心相同,且命名空间为 default。
否则,您应该将参数 namespace_name 和 region_id 设置为有效值。
因此,无服务器云函数间调用机制并非真正地脱离无服务器云函数产品客户端,只是 Tencent Cloud SDK for Python 为开发者提供更佳便利的封装调用机制。
本文将向您介绍并演示借助 Tencent Cloud SDK for Python 如何以 Python 原生函数的形式调用指定无服务器云函数。
当我们谈论到如何使用 Tencent Cloud SDK for Python 调用无服务器云函数时,或许首先想到的是利用无服务器云函数产品客户端所提供的 invoke
、easy_invoke
或 schedule_invoke
等实例方法快速发起对指定无服务器云函数的调用并获得运行结果。
但除此之外,我们还可以借助 Tencent Cloud SDK for Python 的无服务器云函数产品客户端所提供的高级特性以 Python 原生函数的形式调用指定无服务器云函数。
通常情况下我们在当前运行环境中对无服务器云函数的调用过程或许都可以被称之为 RPC(远程过程调用),开发者可以感知到 RPC 过程的存在。例如我们使用无服务器云函数产品客户端所提供的 easy_invoke
实例方法调用指定无服务器云函数时,我们可以感知到这是一次调用请求。
通过利用 Tencent Cloud SDK for Python 的无服务器云函数产品客户端所提供的 Python 原生调用高级特性,我们可以将对无服务器云函数的调用封装为对一个 Python 原生函数的调用。这样当开发者对相关联的 Python 原生函数调用时等同于对指定无服务器云函数的调用,从而屏蔽 RPC 过程感知。
没有理解?没关系,在下文中我们将通过一个简单的场景介绍并演示如何使用该高级特性。
假定我们在数据中心 ap-shanghai
的命名空间 default
拥有一个已创建就绪的无服务器云函数 addend
,其无服务器云函数的配置为:
其无服务器云函数的源代码为:
在该场景中,我们要求在本地 Python 脚本中实现对无服务器云函数 addend
的调用,传入函数事件字段 value1
和 value2
并获得实际返回值。
其调用必须以 Python 原生函数的形式呈现。
在下文中,我们将通过几个步骤向您演示编写符合当前场景要求的代码示例:
首先,我们需要导入依赖的 Tencent Cloud SDK for Python 的命名空间和模块:
接着,我们需要为 Python 脚本编写入口函数,所有代码逻辑将在该函数中实现。
在上文示例代码中,我们首先实例化一个无服务器云函数产品客户端和访问凭据;接着使用无服务器云函数产品客户端的实例方法 select_function
选择一个无服务器云函数并获得与之对应的 Python 原生函数 addend
;最后调用 Python 原生函数 addend
并打印输出无服务器云函数 addend
的实际返回值。
在获得的 Python 原生函数 addend
内部,其将调用与之关联的无服务器云函数产品客户端的实例方法 easy_invoke
实现对指定无服务器云函数的调用。
请注意,对关联无服务器云函数的 Python 原生函数调用时其参数必须完全使用关键字参数传递,参数名即为指定无服务器云函数运行时事件的字段名称,否则行为是未定义的。
在上文示例代码中所涉及的 API 如下:
最后,我们尝试运行本地 Python 脚本,如果一切正常将输出:
或许您已经注意到,使用 Tencent Cloud SDK for Python 的无服务器云函数产品客户端的实例方法 select_function
所获得的关联 Python 原生函数无法使用顺序参数,且无法与类方法、类实例方法相结合并获得 IDE 所提供的引导提示。
如果您希望以类方法、类实例方法或函数的形式以可控的函数或方法签名组成您的代码,或许使用 Tencent Cloud SDK for Python 的无服务器云函数客户端所提供的另一项高级特性更加合适:
本文将向您进一步介绍并演示借助 Tencent Cloud SDK for Python 如何将无服务器云函数绑定到类方法、类实例方法或函数,这是获得关联无服务器云函数的 Python 原生函数的进阶。
这是由 Tencent Cloud SDK for Python 的无服务器云函数产品客户端所提供的高级特性,如果您未曾阅读如何选择一个无服务器云函数并获得与之关联的 Python 原生函数的实践文档,请先阅读:
在上篇实践文档中我们得知 Tencent Cloud SDK for Python 的无服务器云函数产品客户端的实例方法 select_function
可以选择一个无服务器云函数并获得与之相关联的 Python 原生函数,通过对 Python 原生函数的调用即为对关联无服务器云函数的调用,从而屏蔽 RPC 感知。
遗憾的是,我们无法控制所获得与无服务器云函数关联的 Python 原生函数的签名和形态,且不能将其集成为类方法或类实例方法。与此同时,我们或许还需要在全局范围内维护一个 Python 原生函数实例。
不过无需担心,Tencent Cloud SDK for Python 的无服务器云函数产品客户端提供了另一种高级特性用于解决上述问题,我们将其称之为绑定到无服务器云函数。
与关联到无服务器云函数的高级特性不同,绑定到无服务器云函数特性使用 Python 高级特性装饰器实现,这意味着开发者可以以更简洁、美观的代码快速集成该特性。什么是 Python 装饰器?
没有理解?没关系,在下文中我们将通过几个简单的应用场景向您进一步说明如何使用绑定到无服务器云函数特性组成您的应用程序代码逻辑。
在下文中我们将列举几段连续的示例代码并向您介绍 Tencent Cloud SDK for Python 的无服务器云函数产品客户端所提供的绑定到无服务器云函数特性的工作流程,我们仍然以无服务器云函数 addend
为例:
首先我们需要在应用程序中导入所依赖的 Tencent Cloud SDK for Python 相关命名空间和模块:
然后我们需要在应用程序源代码的适合层级实例化一个或多个无服务器云函数产品客户端和访问凭据,在下文中我们将选择 Python 模块全局变量作为适合层级:
在上文示例代码中,我们所实例化的无服务器云函数产品客户端由 Python 模块全局变量 function_client
存储。
Python 原生函数可能是我们将应用程序与无服务器云函数相集成的多数选择。
我们首先为无服务器云函数 addend
编写在 Python 原生函数的投射:
在上文示例代码中,Python 原生函数 addend
将引发 NotImplementedError
异常,该异常指示当前函数逻辑未实现。
接下来我们需要做的是,为无服务器云函数 addend
的 Python 原生投射函数套用一层装饰器:
上文示例代码中是 Python 原生投射函数 addend
套用 Python 装饰器后的形态。
最后,我们尝试调用在上文示例代码中定义的 Python 原生函数 addend
并获得运行结果:
如果一切正常,我们将得到打印输出:
绑定的无服务器云函数 addend
运行事件为:
有时或许我们希望使用 Python 类方法或类实例方法与无服务器云函数相集成。
首先我们需要编写一个可实例化的类以演示如何将类方法或类实例方法绑定到无服务器云函数:
在上文示例代码中,我们定义了符号名为 Addition
的实例类。该类拥有一个实例方法 get_result
用于计算类属性 value1
和 value2
的相加值。
接着,我们需要将实例类 Addition 的实例方法 get_result
绑定到无服务器云函数 addend
以实现加法运算功能。套用装饰器后的实例类形态如下:
在上文示例代码中我们额外使用了一个在绑定 Python 函数时未使用也不受支持的装饰器参数 include_attributes
。该参数允许提供一个列表实例,列表实例的成员为需要从当前所绑定类方法或类实例方法的类实例或静态类中所额外包含的公开属性名称。
被装饰器参数 include_attributes
包含的类公开属性名和值将作为绑定的无服务器云函数运行时事件的字段名称和值,被绑定的类方法或类实例方法的参数也将包括在其中,这与是否使用并设置装饰器参数 include_attributes
的值无关。
请注意,被绑定的类方法的首个参数名称必须为 cls;被绑定的类实例方法的首个参数名称必须为 self,否则行为是未定义的。
最后,我们尝试实例化一个 Addition
类并调用其实例方法 get_result
获得加法运算结果:
如果一切正常,我们将得到打印输出:
绑定的无服务器云函数 addend
运行事件为:
或许您已经注意到,使用 Tencent Cloud SDK for Python 的无服务器云函数产品客户端所提供的绑定到无服务器云函数高级特性时,调用被绑定的函数、类方法或类实例方法支持顺序参数和关键字参数,与 Python 原生函数、类方法或类实例方法的参数传递规则一致。
这是因为 Tencent Cloud SDK for Python 在实现过程中使用 Python 反射(自省)高级特性实现对被绑定可调用对象的参数名称的检查。
配置项
值
运行环境
Python 3.6
内存上限
64 MBytes
入口函数
index.main
运行角色
QCS_SCFExcuteRole
应用场景类型
建议选择的访问凭据类型
参考级别
单一源文件
优先使用默认凭据,其次考虑使用文件凭据。
不适用
多源文件项目
优先使用文件凭据,其次考虑使用环境凭据。
不适用
无服务器云函数
优先使用文件凭据,其次考虑使用环境凭据。
不适用
开发环境
建议使用环境凭据,降低访问凭据泄漏风险。
高
配置
值
运行环境
Python 3.6
内存上限
64 MBytes
入口函数
index.main
运行角色
QCS_SCFExcuteRole
本文将向您进一步介绍并演示借助 Tencent Cloud SDK for Python 如何为无服务器云函数创建多个例程并调用它们,这是绑定到无服务器云函数的进阶。
这是由 Tencent Cloud SDK for Python 的无服务器云函数产品客户端所提供的高级特性,如果您未曾阅读如何将一个无服务器云函数绑定到 Python 原生同步或异步函数的实践文档,请先阅读:
在上一篇最佳实践中我们得知借助 Tencent Cloud SDK for Python 可以快速实现将一个或多个 Python 原生的同步或异步函数绑定到指定的无服务器云函数,进而以完全 Python 原生调用的形态组织代码以屏蔽或减少开发者对无服务器云函数调用时的 RPC 流程感知。
遗憾的是,该高级特性仅适用于无服务器云函数调用方,而被调用的无服务器云函数依旧需要以传统事件处理的方式组织一个或多个功能的代码实现。当我们在一个无服务器云函数中提供的相关功能较多时,开发者还需要在无服务器云函数执行方法中实现事件解析和派发。
因此,Tencent Cloud SDK for Python 通过提供另外一种高级特性以解决这些问题,我们将其称之为适用于无服务器云函数集成调用的例程派发框架,简称无服务器云函数例程。
与绑定到无服务器云函数的高级特性相同,无服务器云函数例程特性也使用 Python 高级特性装饰器实现,这意味着开发者可以以更简洁、美观的代码快速集成该特性。什么是 Python 装饰器?
没有理解?没关系,在下文中我们将通过几个简单的应用场景向您进一步说明如何使用无服务器云函数例程特性组成您的应用程序代码逻辑。
在下文中我们将列举几段连续的示例代码并向您介绍 Tencent Cloud SDK for Python 所提供的无服务器云函数例程特性的工作流程。
假定我们需要在一个无服务器云函数中实现对加法和减法的算术运算:
首先我们需要创建一个名为 arithmetic
的无服务器云函数:
然后,我们需要为无服务器云函数 arithmetic 编写代码。与以往不同,我们将使用 Tencent Cloud SDK for Python 提供的无服务器云函数例程特性和框架。首先我们需要导入使用的命名空间和模块:
接着我们需要调用 use_routine_dispatcher
函数为当前无服务器云函数启用例程派发器框架:
在上述代码中,我们得到一个被称之为例程派发器类型的实例并由变量 dispatcher
存储。例程派发器实际上是一个可解析无服务器云函数例程调用协议的路由,每一个例程派发器实例将管理一个或多个已注册的无服务器云函数例程。没有理解?没关系,让我们继续向下阅读。
然后我们需要编写 2 个例程,分别是 addend
和 subtract
,分别对应加法和减法的算术运算:
或许您已经注意到,无服务器云函数例程实际上是一个套用例程派发装饰器的一个 Python 原生函数,在上述代码中我们仅需要为 Python 原生函数使用 @dispatcher.routine
装饰器即可将其注册为可调用的无服务器云函数例程。
到此,无服务器云函数 arithmetic
的代码已完成编写。
在上文中我们已经创建名为 arithmetic
的无服务器云函数,并分别实现适用于加法和减法算术运算的无服务器云函数例程,现在让我们在一个本地函数中调用它们:
首先,我们需要导入所依赖的命名空间和模块:
接着,我们需要在本地函数的 Python 模块全局获取一个无服务器云函数产品客户端实例:
然后,我们需要为无服务器云函数的 addend
和 subtract
分别创建 2 个 Python 原生函数,并将他们分别绑定到对应的无服务器云函数例程:
是的,对无服务器云函数例程的绑定与对无服务器云函数的绑定非常相似。
我们仅需要定义 2 个与无服务器云函数例程签名完全一致的 Python 原生函数,然后为其分别套用 @function_client.bind_routine
装饰器即可。现在对 Python 原生函数 addend
和 subtract
的调用等同于对无服务器云函数 arithmetic
的例程 addend
和 subtract
的调用。
值得注意的是,我们将这些与无服务器云函数例程签名相同的 Python 函数称之为 Python 原生扮演函数。
当然,如果您不希望在应用程序中为每一个无服务器云函数例程编写对应的 Python 原生函数,您可以选择由 Tencent Cloud SDK for Python 代您创建一个与指定无服务器云函数例程相关联的 Python 原生函数:
现在,变量 addend
和 subtract
为可调用的 Python 原生函数对象。
最后,我们尝试在本地函数中调用无服务器云函数 arithmetic
的例程 addend
和 subtract
,并打印输出加法和减法算术运算的结果:
请注意,如果您使用方法 seletc_routine
创建无服务器云函数例程的 Python 原生扮演函数,您需要完全使用关键字参数调用,否则 Tencent Cloud SDK for Python 无法确定每个参数对应的位置:
如果您希望在调用无服务器云函数例程时获得 RPC 流程感知,您可以使用方法 routine_invoke
:
如果一切正常,您将会在终端看到如下输出:
本文将向您介绍并演示借助 Tencent Cloud SDK for Python 如何实现本机定时调用无服务器云函数
谈论到定时调用无服务器云函数时,或许我们首先想到的是利用无服务器云函数的定时触发器功能来实现。当我们需要在大量不确定个数的指定时间调用无服务器云函数时定时触发器将不能为我们提供便利,因为无服务器云函数的触发器个数受触发器配额限制。
通过借助 Tencent Cloud SDK for Python 的无服务器云函数定时调用机制,我们可以快速在本机运行环境中实现在在多个指定时间调用指定的无服务器云函数并获得运行结果,这也称之为按时间计划调用。
在下文中我们将通过一个简单的应用场景向您进一步介绍并演示如何利用 Tencent Cloud SDK for Python 实现对指定无服务器云函数的本机定时调用。
假定我们在数据中心 ap-shanghai
的命名空间 default
拥有一个已创建就绪的无服务器云函数 hello
,其无服务器云函数的配置为:
在该场景中我们要求无服务器云函数 hello
实现发起一个 HTTP 请求到 https://libget.com/hello 并获得响应正文(Body)作为无服务器云函数的返回值。
此外,在本地运行环境创建一个 Python 脚本并实现计划在本机时间的 10 秒后、20 秒后和 30 秒后调用无服务器云函数 hello
并获得无服务器云函数的实际返回值。
在下文中,我们将通过几个步骤向您演示编写符合当前场景要求的代码示例:
首先,我们需要根据本场景要求编写无服务器云函数 hello
的源代码。
为便于发起 HTTP GET 请求,我们采用 Python HTTP 库 requests
实现。
接着,我们需要为无服务器云函数 hello
编写入口函数。
在上文示例代码中,我们导入依赖模块 requests
并使用 requests.get 函数向 https://libget.com/hello 发起 HTTP GET 请求并将响应正文(Body)作为无服务器云函数 hello
的返回值。
然后,我们需要根据本场景要求编写一个 Python 脚本并实现计划定时调用无服务器云函数 hello
。
首先我们需要在无服务器云函数 hello
中导入 Tencent Cloud SDK for Python 相关命名空间和模块:
为便于获取计划定时调用的无服务器云函数运行结果,我们需要定义一个调用完成后的回调函数。当指定无服务器云函数在指定时间调用并运行完成后,Tencent Cloud SDK for Python 将调用指定回调函数。
接着,我们需要为 Python 脚本编写入口函数代码。
在上文示例代码中我们首先实例化一个无服务器云函数产品客户端和访问凭据,接着获取当前本机 UNIX 时间戳,然后循环 3 次并分别创建相对于前一步获取的本机 UNIX 时间戳的 10 秒、20 秒和 30 秒定时无服务器云函数调用任务,最后运行已创建的所有定时调用任务并等待完成。
值得注意的是上文中示例代码以同步编程方式使用 Tencent Cloud SDK for Python,对于异步编程方式将无需调用无服务器云函数产品客户端实例的 run_schedule
方法,所有已创建的定时调用任务将被 Tencent Cloud SDK for Python 自动调度运行。
最后,我们运行本场景中所创建并编写的本地 Python 脚本,如果一切正常将打印输出:
属性
值
数据中心
ap-shanghai
命名空间
default
函数名称
arithmetic
运行环境
Python 3.6
配置
值
运行环境
Python 3.6
内存上限
64 MBytes
入口函数
index.main
运行角色
QCS_SCFExcuteRole