在本地测试Python Google Cloud函数



我正在谷歌云函数上试用Python3.7运行时。我能够部署这些功能,并在部署后使其工作,但是,在部署之前,我似乎无法运行模拟器来在本地测试它们。

谷歌的文档有点不一致,他们告诉你在这里安装谷歌功能模拟器:https://cloud.google.com/functions/docs/emulator

但在Firebase上,他们会告诉你npm installFirebase管理、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)

相关内容

  • 没有找到相关文章

最新更新