J'essaie le runtime Python3.7 sur Google Cloud Functions. Je suis en mesure de déployer les fonctions et de les faire fonctionner une fois déployées, mais je n'arrive pas à exécuter l'émulateur pour les tester localement avant de déployer.
La documentation de Google est un peu incohérente où ils vous disent d'installer l'émulateur de fonctions Google ici: https://cloud.google.com/functions/docs/emulator
Mais sur Firebase, ils vous disent de npm install
firebase-admin, firebase-tools et firebase-functions.
Toute la documentation de l'émulateur fait référence à des exemples écrits en JS, aucun dans Python donc je me demande si ces émulateurs exécutent même Python fonctionne localement?
Merci
Il n'y a pas d'émetteur Python pour les fonctions cloud.
Si vous voulez pouvoir exécuter votre fonction HTTP localement, vous pouvez l'encapsuler dans une application Flask comme ceci:
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)
Sur la base de la réponse de Dustin, j'ai développé un package pour servir d'émulateur:
pip install gcp-functions-emulator
Étant donné que vous souhaitez remplir la fonction suivante
# mycloudfunction.py
def api(request):
return 'important data'
Pour émuler, nous devons l'appeler ainsi:
gcpfemu <path/to/file.py> <function_name>
Par exemple, avec le code ci-dessus, nous l'appellerons:
gcpfemu mycloudfunction.py api
Et pour accéder aux données que nous pouvons utiliser par exemple curl:
curl localhost:5000/api
> important data
Pour l'exécuter dans IntelliJ avec Target Type = Script Path
et les options par défaut devraient ressembler à ceci:
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)