在本地测试Python Google Cloud Functions

Mic*_*dek 14 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 installfirebase-admin,firebase-tools和firebase-functions。

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

谢谢

Dus*_*ram 17

没有适用于Cloud Functions的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)
Run Code Online (Sandbox Code Playgroud)

  • 发布/订阅消息?我可以效仿吗? (2认同)
  • @Hsn 尝试上面的“对于具有非二进制数据的后台函数”示例。您作为 JSON 请求正文提供的“data”值最终会成为“event”参数,“context”参数由框架创建。 (2认同)

din*_*igo 8

根据Dustin的回答,我开发了一个程序包作为模拟器:

pip install gcp-functions-emulator
Run Code Online (Sandbox Code Playgroud)

鉴于您想提供以下功能

# mycloudfunction.py
def api(request):
  return 'important data'
Run Code Online (Sandbox Code Playgroud)

要进行仿真,我们必须这样称呼它:

gcpfemu <path/to/file.py> <function_name>
Run Code Online (Sandbox Code Playgroud)

例如,使用上面的代码,我们将其称为:

gcpfemu mycloudfunction.py api
Run Code Online (Sandbox Code Playgroud)

为了访问数据,我们可以使用例如curl:

curl localhost:5000/api
> important data
Run Code Online (Sandbox Code Playgroud)

  • 可以提供Github项目链接吗?这是我愿意参与的一个项目。 (2认同)