Как локально смоделировать среду движка приложения для приложения python3 - PullRequest
0 голосов
/ 12 февраля 2019

Я создаю микро-сервис, который должен работать в стандартной среде Python 3 Google App Engine.Я хочу запустить его в среде моделируемого приложения Google.В стандартной среде python2 вы можете сделать что-то вроде:

dev_appserver.py [PATH_TO_YOUR_APP]

, но это не поддерживается для python, и я не нашел и не нашел эквивалента в документации, и мне нужно это для локального тестирования моего приложения с хранилищем данных.

1 Ответ

0 голосов
/ 12 февраля 2019

dev_appserver.py по-прежнему доступен во время выполнения GAE Python 3, однако это не рекомендуется, поскольку это идет вразрез с идиоматической песочницей, к которой они сейчас стремятся.Чтобы заставить его работать, есть несколько дополнительных шагов к тому, к чему вы привыкли.Сначала запустите в своем терминале cloud beta emulators datastore env-init, чтобы получить переменные среды эмулятора хранилища данных ваших проектов.Если все по умолчанию, они должны выглядеть примерно так:

    DATASTORE_DATASET=your-project-name
    DATASTORE_EMULATOR_HOST=localhost:8081
    DATASTORE_EMULATOR_HOST_PATH=localhost:8081/datastore
    DATASTORE_HOST=http://localhost:8081
    DATASTORE_PROJECT_ID=your-project-id

Теперь примените эти переменные к терминалу, который вы будете запускать dev_appserver.py, с помощью следующего (это сделает средство просмотра хранилища данных в dev_appserver.py подключится правильнов эмулятор хранилища данных):

$ $(gcloud beta emulators datastore env-init)

Теперь вам нужно передать эти переменные в python venv внутри dev_appserver.py со следующей структурой аргументов (это позволит облачным библиотекам Google вашего приложения правильно подключаться к эмулятору хранилища данных):

$ dev_appserver.py \
--application=your-project-name \
--env_var DATASTORE_DATASET=your-project-name \
--env_var DATASTORE_EMULATOR_HOST=localhost:8081 \
--env_var DATASTORE_EMULATOR_HOST_PATH=localhost:8081/datastore \
--env_var DATASTORE_HOST=http://localhost:8081 \
--env_var DATASTORE_EMULATOR_HOST_PATH=localhost:8081/datastore \
  [PATH_TO_YOUR_APP]

Наконец, откройте второй терминал и запустите эмулятор хранилища данных с помощью:

$ gcloud beta emulators datastore start

Все должно работать.Обратите внимание, что я предположил, что ваш проект правильно настроен для среды Python 3 (новая структура app.yaml и наличие файла requirements.txt)

...