绑定到无服务器云函数
本文将向您进一步介绍并演示借助 Tencent Cloud SDK for Python 如何将无服务器云函数绑定到类方法、类实例方法或函数,这是获得关联无服务器云函数的 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 高级特性装饰器实现,这意味着开发者可以以更简洁、美观的代码快速集成该特性。
没有理解?没关系,在下文中我们将通过几个简单的应用场景向您进一步说明如何使用绑定到无服务器云函数特性组成您的应用程序代码逻辑。
在下文中我们将列举几段连续的示例代码并向您介绍 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 反射(自省)高级特性实现对被绑定可调用对象的参数名称的检查。