我正在谷歌云函数上试用Python3.7运行时。我能够部署这些功能,并在部署后使其工作,但是,在部署之前,我似乎无法运行模拟器来在本地测试它们。
谷歌的文档有点不一致,他们告诉你在这里安装谷歌功能模拟器:https://cloud.google.com/functions/docs/emulator
但在Firebase上,他们会告诉你npm install
Firebase管理、Firebase工具和Firebase函数。
所有的模拟器文档都引用了用JS编写的示例,没有一个是用Python编写的,所以我想知道这些模拟器是否在本地运行Python函数?
感谢
您可以使用Python的函数框架在本地运行函数。
给定一个名为main.py
的文件中的函数,如下所示:
def my_function(request):
return 'Hello World'
你可以做:
$ pip install functions-framework
$ functions-framework --target my_function
它将在启动本地开发服务器http://localhost:8080.
要在本地为HTTP函数调用它:
$ curl http://localhost:8080
对于具有非二进制数据的背景函数:
$ curl -d '{"data": {"hi": "there"}}' -X POST
-H "Content-Type: application/json"
http://localhost:8080
对于具有二进制数据的背景函数:
$ curl -d "@binary_file.file" -X POST
-H "Ce-Type: true"
-H "Ce-Specversion: true"
-H "Ce-Source: true"
-H "Ce-Id: true"
-H "Content-Type: application/json"
http://localhost:8080
更新
请使用GCP的官方模拟器和服务框架https://github.com/GoogleCloudPlatform/functions-framework-python
你可以用安装它
pip install functions-framework
已弃用
根据Dustin的回答,我开发了一个用作模拟器的软件包:
pip install gcp-functions-emulator
如果你想提供以下功能
# mycloudfunction.py
def api(request):
return 'important data'
为了模仿,我们必须这样称呼它:
gcpfemu <path/to/file.py> <function_name>
例如,对于上面的代码,我们将称之为:
gcpfemu mycloudfunction.py api
为了访问数据,我们可以使用curl:
curl localhost:5000/api
> important data
在GitHub上查看此项目:GoogleCloudPlatform/functions framework
目前只有Node.js、Go和PHP中的实现,但请参阅关于Python实现的第5期。
我建议,无论你使用什么实现,都要遵循功能框架合同
UPDATE:正如Dustin所提到的,现在还有一个Python实现。
要使用Target Type = Script Path
和默认选项在IntelliJ中运行它,它应该是这样的:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def hello():
return hello_get(request)
if __name__ == '__main__':
app.run('127.0.0.1', debug=True)