我正在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函数?
谢谢
答案 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.js,Go和PHP中的实现,但请参见Issue #5有关Python实现。
无论您使用哪种实现方式,我都建议遵循Functions Framework Contract