在本地测试Python Google Cloud Functions

时间:2018-12-09 15:47:23

标签: python-3.x firebase google-cloud-platform google-cloud-functions

我正在Google Cloud Functions上试用Python3.7运行时。我能够部署功能并使它们一旦部署就可以工作,但是,在部署之前,我似乎无法在本地运行模拟器来对其进行测试。

Google的文档有点不一致,他们告诉您在此处安装google函数模拟器:https://cloud.google.com/functions/docs/emulator

但是在Firebase上,他们告诉您npm install firebase-admin,firebase-tools和firebase-functions。

所有仿真器文档都引用了用JS编写的示例,而没有使用Python编写的示例,因此我想知道这些仿真器是否甚至在本地运行Python函数?

谢谢

4 个答案:

答案 0 :(得分:8)

没有用于云功能的Python模拟器。

如果您希望能够在本地运行HTTP函数,可以将其包装在Flask应用中,如下所示:

def my_function(request):
    return 'Hello World'

if __name__ == "__main__":
    from flask import Flask, request
    app = Flask(__name__)

    @app.route('/')
    def index():
        return my_function(request)

    app.run('127.0.0.1', 8000, debug=True)

答案 1 :(得分:3)

根据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

答案 2 :(得分:1)

要使用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)

答案 3 :(得分:0)

在GitHub上查看此项目:GoogleCloudPlatform/functions-framework

当前只有Node.jsGoPHP中的实现,但请参见Issue #5有关Python实现。

无论您使用哪种实现方式,我都建议遵循Functions Framework Contract