Mik*_*ike 3 python-3.x google-cloud-repository google-cloud-functions
我有一个托管在Google Cloud Repository中的存储库结构,对于Google Cloud Functions来说是这样的:
.
module.py
/common
module1.py
module2.py
/cloudfunction1
main.py
requirements.txt
/cloudfunction2
main.py
requirements.txt
Run Code Online (Sandbox Code Playgroud)
将每个云功能目录部署为单独的云功能.
我想要做的是从公共目录或从根目录导入模块,但是使用sys.path.append('..')方法似乎不起作用.我认为这是因为云功能部署过程只包括main.py所在目录中的文件?
我该如何解决这个问题?
如果您发现自己需要修改sys.path或以其他方式导入"超出顶级包",这通常是Python中的代码味道,您的项目没有正确构建.
在这个云函数示例中,您可以做的一件事就是构建您的项目:
.
??? common
? ??? module1.py
? ??? module2.py
??? main.py
??? requirements.txt
Run Code Online (Sandbox Code Playgroud)
哪里main.py包含两个功能:
from common import module1, module2
def cloudfunction1(request):
...
def cloudfunction2(request):
...
Run Code Online (Sandbox Code Playgroud)
您可以直接按名称部署这些功能:
$ gcloud beta functions deploy cloudfunction1 --runtime python37 --trigger-http
$ gcloud beta functions deploy cloudfunction2 --runtime python37 --trigger-http
Run Code Online (Sandbox Code Playgroud)
或者通过入口点:
$ gcloud beta functions deploy foo --runtime python37 --entry-point cloudfunction1 --trigger-http
$ gcloud beta functions deploy bar --runtime python37 --entry-point cloudfunction2 --trigger-http
Run Code Online (Sandbox Code Playgroud)
请注意,这有一些缺点:
requirements.txt文件需要包含两个函数的所有依赖项common目录进行更改,则需要重新部署这两个函数也就是说,如果您的功能如此相关以至于它们共享公共代码并且通常需要一起部署,那么更好的选择可能是使它们成为单个App Engine应用程序的一部分.(这仅适用于它们都使用HTTP触发器).
| 归档时间: |
|
| 查看次数: |
609 次 |
| 最近记录: |