Tencent Cloud SDK
Tencent CloudGitHub
简体中文
简体中文
  • 欢迎
  • 常见问题
  • Python
  • 概述
  • 安装
  • 入门
  • 最佳实践
    • 无服务器云函数
      • 无服务器云函数间调用
      • 定时调用无服务器云函数
      • 原生调用无服务器云函数
        • 绑定到无服务器云函数
        • 使用例程组织无服务器云函数
    • 无服务器数据库
      • 创建和管理无服务器数据库
    • 其他 Tencent Cloud 产品
      • 选择最佳的访问凭据类型
  • API 文档
    • 无服务器云函数
      • 类和方法
        • Client 类
          • easy_invoke 方法
          • routine_invoke 方法
          • select_function 方法
          • select_routine 方法
          • bind_function 方法
          • bind_routine 方法
          • schedule_invoke 方法
          • run_schedule 方法
          • invoke 方法
          • create_function 方法
          • delete_function 方法
          • publish_function_version 方法
          • copy_function 方法
          • update_function_code 方法
          • update_function_configure 方法
          • get_function_result_by_request_id 方法
          • get_function_results 方法
          • list_functions 方法
          • list_function_versions 方法
          • get_function_info 方法
          • create_trigger 方法
          • delete_trigger 方法
          • create_namespace 方法
          • delete_namespace 方法
          • list_namespaces 方法
          • update_namespace 方法
          • get_function_code_download_url 方法
          • download_function_code 方法
          • create_layer 方法
          • delete_layer 方法
          • get_layer_info 方法
          • list_layers 方法
          • list_layer_versions 方法
          • submit_monitor_indicator 方法
        • FunctionSchedule 类
          • cancel 方法
        • FunctionResultFuture 类
          • get_request_id 方法
        • FunctionTrigger 类
          • get_trigger_kind 方法
          • get_trigger_context 方法
          • use_timer 方法
          • use_object_storage_bucket 方法
          • use_message_queue_topic 方法
        • FunctionCode 类
          • get_code_source 方法
          • get_code_context 方法
          • use_object_storage_bucket 方法
          • use_local_zip_archive 方法
          • use_git_repository 方法
        • LayerContent 类
        • fetch_client 函数
        • use_routine_dispatcher 函数
      • 数据类型
        • FunctionResult 类型
        • FunctionInfo 类型
        • FunctionInfoEx 类型
        • FunctionVersionInfo 类型
        • NamespaceInfo 类型
        • LayerInfo 类型
        • FunctionConfigure 类型
        • FunctionResultFilter 类型
        • FunctionFilter 类型
        • ObjectStorageBucketTriggerFilter 类型
        • MessageQueueTopicTriggerFilter 类型
        • LayerFilter 类型
        • FunctionRuntime 枚举器
        • FunctionType 枚举器
        • FunctionResultType 枚举器
        • FunctionTriggerKind 枚举器
        • FunctionCodeSource 枚举器
        • LayerContentSource 枚举器
        • LayerStatus 枚举器
      • 异常
        • InvokeError 异常
        • StatusError 异常
    • 无服务器数据库
      • 类和方法
        • Client 类
          • create_instance 方法
          • delete_instance 方法
          • list_instances 方法
          • set_instance_extranet 方法
        • fetch_client 函数
      • 数据类型
        • InstanceInfo 类型
        • InstanceConfigure 类型
        • DatabaseCharset 枚举器
    • 其他 Tencent Cloud 产品
      • 类和方法
        • Waitable 类
          • wait_for_done 方法
          • has_done 方法
          • set_result 方法
        • ErrorManager 类
          • add_handler 方法
          • remove_handler 方法
          • has_handler 方法
          • clear_all_handler 方法
        • UniversalClient 类
          • action 方法
          • action_for_product 方法
          • select_action 方法
          • get_product_id 方法
          • set_product_id 方法
          • set_access_endpoint 方法
          • set_access_proxies 方法
          • get_last_response_metadata 方法
        • Proxies 类
          • use_proxy_server 方法
          • add_proxy_server 方法
          • remove_proxy_server 方法
      • 数据类型
        • ResponseMetadata 类型
        • ProxyAuth 类型
        • ProxyType 枚举器
        • ErrorHandlerResult 枚举器
        • WaitableStatus 枚举器
      • 异常
        • Error 异常
        • NotFoundError 异常
        • ExistedError 异常
        • OccupiedError 异常
        • ClientError 异常
        • RequestError 异常
        • ResponseError 异常
        • ActionError 异常
        • ActionResultError 异常
  • GitHub 存储库
  • Issues 跟踪器
  • PyPI 项目主页
由 GitBook 提供支持
在本页
  • 概述
  • 场景
  • 设定
  • 要求
  • 指导
  • 编写 addend 函数
  • 编写 hello 函数
  • 运行
  • 探究

这有帮助吗?

导出为 PDF
  1. 最佳实践
  2. 无服务器云函数

无服务器云函数间调用

本页将向您介绍并演示如何使用 Tencent Cloud SDK for Python 轻松实现无服务器云函数间调用

概述

通常情况下,我们可能需要在一个无服务器云函数中依赖另一个或多个无服务器云函数。通过在无服务器云函数中集成并使用 Tencent Cloud SDK for Python,无服务器云函数间调用将非常易于实现。

在下文中我们将通过一个简单的应用场景向您进一步介绍并演示如何使用 Tencent Cloud SDK for Python 快速实现在无服务器云函数之间相互调用。

场景

设定

假定我们在数据中心 ap-shanghai 的命名空间 default 中拥有 2 个已创建就绪的无服务器云函数,其名称分别是 hello 和 addend。这些无服务器云函数的配置如下:

配置项

值

运行环境

Python 3.6

内存上限

64 MBytes

入口函数

index.main

运行角色

QCS_SCFExcuteRole

要求

在该场景中,我们要求在无服务器云函数 hello 中以友好且可供人类直接阅读的字符串返回一次加法运算的结果,其加法运算过程要求在无服务器云函数 addend 中实现。

指导

在下文中,我们将通过几个步骤向您演示编写符合当前场景要求的代码示例:

编写 addend 函数

首先,我们需要先编写无服务器云函数 hello 的依赖函数 addend 的函数源代码:

def main(
    event: dict,
    context: dict
) -> int:
    try:
        return event['value1'] + event['value2']
    except KeyError as error:
        raise ValueError('event missing field: ' + str(error))

在无服务器云函数 addend 中,我们尝试获取当前函数调用事件中的字段 value1 和 value2 的值,并将字段 value1 和 value2 的值相加后返回,期望相加值类型为整形。

编写 hello 函数

接着,我们需要编写依赖无服务器云函数 addend 的主函数 hello 的函数源代码:

导入模块

首先我们需要在无服务器云函数 hello 中导入 Tencent Cloud SDK for Python 相关命名空间和模块:

from tencent.cloud.serverless import functions

入口函数

接着我们需要为无服务器云函数 hello 编写入口函数。

在入口函数中我们将尝试使用 Tencent Cloud SDK for Python 所提供的无服务器云函数间调用功能调用无服务器云函数 addend 完成一次加法运算并获取结果:

def main(
    event: dict,
    context: dict
) -> str:
    try:
        result: int = functions.invoke('addend', function_event = {
            'value1': 10,
            'value2': 20    
        })
        
        return 'addend result: ' + str(result)
    except functions.errors.InvokeError as error:
        return 'invoke addend function error: ' + str(error)

在无服务器云函数 hello 中,我们尝试使用 Tencent Cloud SDK for Python 函数间调用功能调用无服务器云函数 addend 计算数值 10 和 20 的相加结果并以人类易读的描述性字符串返回。

如果无服务器云函数 addend 运行出错,则返回错误原因的描述性字符串。

运行

现在我们尝试运行无服务器云函数 hello,如果一切正常其运行结果为:

"addend result: 30"

探究

在上文的演示代码中我们导入 Tencent Cloud SDK for Python 的无服务器云函数产品软件包,使用 functions.invoke 函数完成无服务器云函数之间相互调用的工作。

您或许已经注意到,无服务器云函数间调用的方式不需要您维护一个访问凭据和无服务器云函数产品客户端实例,这是因为 Tencent Cloud SDK for Python 的无服务器云函数间调用机制已代您维护一个有效的临时访问凭据和产品客户端实例。

当您初次使用 functions.invoke 或 functions.invoke_async 函数时,Tencent Cloud SDK for Python 会尝试在内部实例化一个无服务器云函数产品客户端并搜寻采用非持久环境凭据。

并且,函数 functions.invoke 或 functions.invoke_async 在内部将依赖无服务器云函数产品客户端的 easy_invoke 实例方法,其具有与依赖方法相同的行为和返回值。

请注意,使用无服务器云函数间调用方式调用的目标无服务器云函数必须与当前无服务器云函数所在数据中心相同,且命名空间为 default。

否则,您应该将参数 namespace_name 和 region_id 设置为有效值。

因此,无服务器云函数间调用机制并非真正地脱离无服务器云函数产品客户端,只是 Tencent Cloud SDK for Python 为开发者提供更佳便利的封装调用机制。

上一页无服务器云函数下一页定时调用无服务器云函数

最后更新于5年前

这有帮助吗?

请注意,无服务器云函数间调用仅支持已配置 的无服务器云函数发起调用。

当无服务器云函数已配置具有有效访问权限的 时,其函数在运行代码之前将自动申请并获得一个非持久性的临时访问凭据并将其存储在当前运行环境的环境变量中,这就是环境凭据的由来。

如果当前无服务器云函数已配置 ,实例化通用或产品客户端时允许不提供访问凭据,此时 Tencent Cloud SDK for Python 将自动搜寻并采用环境凭据。

运行角色
easy_invoke 方法
运行角色
运行角色