首页 > 解决方案 > python 谷歌云函数本地依赖

问题描述

我正在用 python 编写两个谷歌云函数。这两个函数有一些共同的代码。这是我的目录树:

root
|-- module
    |-- common
        |-- common_func.py
    |-- func1
        |-- main.py
        |-- requriments.txt
    |-- func2
        |-- main.py
        |-- requriments.txt

commmon_func.py我有一种common_method()在两者中都使用的方法main.py(对应于每个云功能)。本地工作正常进行以下导入:

from root.module.common.common_func import common_method

但是当部署到谷歌云功能时,这不起作用,我假设requirements.txt我需要以某种方式指定运送common_func模块。

我怎样才能做到这一点?

谢谢!

标签: pythongoogle-cloud-functionspackage

解决方案


不可能在两个不同的云功能之间共享代码,因为每个云功能都驻留在不同的 VM 上。有两种方法可以实现您想要做的事情:

  1. 创建一个包含所有需求的包并上传(您必须将常用功能的源代码添加两次,每个功能一个)

  2. 利用外部存储库,例如我重新创建了您的环境并通过调用requirements.txt文件上的存储库来调用依赖项。

例如,我从外部存储库中导入了一个变量的名称:

requirements.txt文件

# Function dependencies, for example:
# package>=version
git+https://source.developers.google.com/p/project_name/r/repository_name

main.py文件

from package_name import class_name

def hello_world(request):
    request_json = request.get_json()
    if request.args and 'message' in request.args:
        return request.args.get('message')
    elif request_json and 'message' in request_json:
        return request_json['message']
    else:
        return class.menssage

通过这种方式,您可以通过上传到存储库来更改代码中的公共模块


推荐阅读