原生调用无服务器云函数
本文将向您介绍并演示借助 Tencent Cloud SDK for Python 如何以 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 3.6
内存上限
64 MBytes
入口函数
index.main
运行角色
QCS_SCFExcuteRole
其无服务器云函数的源代码为:
def main(
event: dict,
context: dict
) -> int:
try:
return event['value1'] + event['value2']
except KeyError as error:
raise ValueError('event missing field: ' + str(error))
在该场景中,我们要求在本地 Python 脚本中实现对无服务器云函数 addend
的调用,传入函数事件字段 value1
和 value2
并获得实际返回值。
其调用必须以 Python 原生函数的形式呈现。
在下文中,我们将通过几个步骤向您演示编写符合当前场景要求的代码示例:
首先,我们需要导入依赖的 Tencent Cloud SDK for Python 的命名空间和模块:
from tencent.cloud.auth import credentials
from tencent.cloud.serverless import functions
接着,我们需要为 Python 脚本编写入口函数,所有代码逻辑将在该函数中实现。
def main():
# Instantiate a serverless cloud function product client
function_client: functions.Client = functions.Client(
# Instantiate an access credential
access_credentials = credentials.Credentials(
secret_id = 'AKIDF3sMOAU1pOgkmrKHchX6TZQ1Mo1C5qa7',
secret_key = 'b4JL8fwxkIgsKMXGi39yYt0ECxZw4wZf'
)
)
# Select a serverless cloud function and get a
# corresponding Python native function.
addend = function_client.select_function(
region_id = 'ap-shanghai',
namespace_name = 'default',
function_name = 'addend'
)
# Calling Python native functions and getting results
addition_result: int = addend(
value1 = 10,
value2 = 20
)
# Print function actual return value
print('info: addition result: ' + str(addition_result))
在上文示例代码中,我们首先实例化一个无服务器云函数产品客户端和访问凭据;接着使用无服务器云函数产品客户端的实例方法 select_function
选择一个无服务器云函数并获得与之对应的 Python 原生函数 addend
;最后调用 Python 原生函数 addend
并打印输出无服务器云函数 addend
的实际返回值。
在获得的 Python 原生函数 addend
内部,其将调用与之关联的无服务器云函数产品客户端的实例方法 easy_invoke
实现对指定无服务器云函数的调用。
在上文示例代码中所涉及的 API 如下:
最后,我们尝试运行本地 Python 脚本,如果一切正常将输出:
info: addition result: 30
或许您已经注意到,使用 Tencent Cloud SDK for Python 的无服务器云函数产品客户端的实例方法 select_function
所获得的关联 Python 原生函数无法使用顺序参数,且无法与类方法、类实例方法相结合并获得 IDE 所提供的引导提示。
如果您希望以类方法、类实例方法或函数的形式以可控的函数或方法签名组成您的代码,或许使用 Tencent Cloud SDK for Python 的无服务器云函数客户端所提供的另一项高级特性更加合适: