You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一脚本中实现两个Python Cloud Functions联动及参数传递

Python Cloud Function 联动实现方案

以下提供两种符合需求的实现方案,可根据实际场景选择:


方案一:两个函数合并部署到单个Cloud Function

该方案无需额外依赖、配置简单,入门阶段优先推荐。

适用场景

不需要Fn2独立触发、两个函数业务耦合度高的场景,运维成本最低。

代码实现

# 原有Fn1逻辑:保持你已有的事件触发配置不变
def fn1(event, context):
    # 你原有获取存储对象uri的逻辑,此处修正了原代码的格式化语法错误
    uri = f"{event['x']}."
    # 新增逻辑:执行完原有逻辑后直接调用Fn2,传入uri参数
    fn2_result = fn2(uri)
    # 输出并返回Fn2的执行结果
    print(f"Fn2执行结果:{fn2_result}")
    return fn2_result

# 你原有Fn2的逻辑完全不需要修改
def fn2(value):
    # 你的原有处理逻辑
    output = "你的实际处理结果" # 替换为你原有代码的final结果
    return output

部署操作

部署时入口函数填fn1,保持你原有的事件触发配置不变即可直接运行。


方案二:两个函数分开部署为独立Cloud Function

该方案适合需要Fn2独立调用、业务解耦的场景。

前置准备

  1. 先将Fn2部署为HTTP触发类型的Cloud Function,部署完成后拿到Fn2的调用URL
  2. 给Fn1的运行服务账号授予Fn2的调用权限(cloudfunctions.invoker角色)

代码实现

独立部署的Fn2代码

import functions_framework

# 注册为HTTP触发入口
@functions_framework.http
def fn2(request):
    # 解析Fn1传递的uri参数
    request_params = request.get_json()
    uri = request_params.get("uri")
    # 你原有Fn2的处理逻辑保持不变
    output = "你的实际处理结果" # 替换为你原有代码的final结果
    return output

独立部署的Fn1代码

import requests

# 替换为你部署Fn2后拿到的实际HTTP调用地址
FN2_INVOKE_URL = "你的Fn2调用URL"

# 你原有Fn1的事件触发逻辑不变
def fn1(event, context):
    # 你原有获取存储对象uri的逻辑
    uri = f"{event['x']}."
    # 新增逻辑:调用独立部署的Fn2
    resp = requests.post(
        FN2_INVOKE_URL,
        json={"uri": uri}
    )
    # 获取Fn2的执行结果
    fn2_result = resp.text
    print(f"Fn2执行结果:{fn2_result}")
    return fn2_result

注意事项

需要在Fn1的requirements.txt文件中添加依赖:requests>=2.28.0


内容的提问来源于stack exchange,提问作者Jarl_Ragnar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:36:03