Тестируйте Python Google Cloud Functions локально - PullRequest
0 голосов
/ 09 декабря 2018

Я пробую среду исполнения Python3.7 в облачных функциях Google.Я могу развернуть функции и заставить их работать после развертывания, однако я не могу запустить эмулятор для их локального тестирования перед развертыванием.

Документация Google немного противоречива, когда вам говорятустановите эмулятор функций Google здесь: https://cloud.google.com/functions/docs/emulator

Но в Firebase вам говорят npm install firebase-admin, firebase-tools и firebase-functions.

Вся документация эмуляторассылается на примеры, написанные на JS, ни на Python, поэтому мне интересно, запускают ли эти эмуляторы функции Python локально?

Спасибо

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Основываясь на ответе Дастина, я разработал пакет, который будет служить эмулятором:

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
0 голосов
/ 22 декабря 2018

Чтобы запустить его в IntelliJ с Target Type = Script Path и параметрами по умолчанию, он должен выглядеть следующим образом:

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)
0 голосов
/ 10 декабря 2018

Нет эмулятора 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...