Как развернуть приложение Flask как пакет для App Engine? - PullRequest
1 голос
/ 09 февраля 2020

Я следую различным учебникам из Google Cloud, чтобы попытаться развернуть свое первое Python Flask приложение в App Engine. Я организовал свое приложение как пакет вместо модуля после просмотра учебника Кори Шафера на YouTube под названием: "Python Flask Учебник: полнофункциональное веб-приложение, часть 5 - Структура пакета"

Итак, теперь в моем рабочем каталоге есть такая структура:

1. Project folder 
    1.1   myapp folder
        1.1.1   __pycache__
        1.1.2   static folder
        1.1.3   __init__.py
        1.1.4   app.yaml
        1.1.5   requirements.txt
        1.1.6   something_else.py
    1.2  run.py

Мой run.py файл имеет следующий код:

from myapp import app

if __name__ == '__main__':
    app.run(debug=True)

Мой * Файл 1012 * выглядит следующим образом:

runtime: python37

handlers:
  # This configures Google App Engine to serve the files in the app's static
  # directory.
- url: /static
  static_dir: static

  # This handler routes all requests not caught above to your main app. It is
  # required when static routes are defined, but can be omitted (along with
  # the entire handlers section) when there are no static files defined.
- url: /.*
  script: auto

Теперь я не уверен, как настроить мой файл app.yaml, чтобы указать точку входа, а также заставить мое приложение работать при развертывании его в App Engine. В настоящее время я запускаю команду gcloud app deploy с помощью Google Cloud SDK после того, как я cd сначала в папку myapp?

Фаза развертывания в консоли проходит успешно, но когда я проверяю ссылку на просмотр приложения, Я столкнулся с ошибкой 502 Bad Gateway (как я и ожидал).

Локально все работает, но развертывание для меня теперь не слишком просто, поскольку мое приложение структурировано как пакет. Любая помощь с благодарностью.

1 Ответ

1 голос
/ 09 февраля 2020

В вашем app.yaml вы можете указать пользовательскую точку входа, например, так:

runtime: python37
entrypoint: gunicorn -b :$PORT myapp:app

Где myapp:app соответствует модулю для импорта приложения WSGI из (from myapp import app)

Вам также следует переместить файл app.yaml в папку проекта и вместо этого запустить gcloud app deploy.

Подробнее здесь: https://cloud.google.com/appengine/docs/standard/python3/runtime

...