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関数をローカルで実行するのかどうか疑問に思っています。
ありがとう
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)
ダスティンの答えに基づいて、エミュレーターとして機能するパッケージを開発しました。
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
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)