Использование create_app () в Flask + App Engine + gunicorn - PullRequest
0 голосов
/ 25 февраля 2020

Flask использует фабричный шаблон для создания объекта приложения:

# myapp/__init__.py

def create_app():
    app = Flask(__name__)
    app.debug = True
    return app

В App Engine gunicorn используется внутри app.yaml для запуска приложения

  # ../myapp/app.yaml

  runtime: python37
  entrypoint: gunicorn -b :$PORT myapp:create_app()

С этой настройкой я получаю Server Error при просмотре приложения. В Stackdriver я получаю следующую ошибку:

[start] 2020/02/25 16:19:45.268388 Start program failed: failed to detect app after start: ForAppStart(): [aborted, context canceled. subject:"app/valid" Timeout:30m0s, attempts:0 aborted, context canceled. subject:"app/invalid" Timeout:30m0s, attempts:0]

А также

/bin/sh: 1: Syntax error: "(" unexpected

Вот структура моего проекта:

project_root/
  app.yaml
  myapp/
    __init__.py  # << create_app() inside here

1 Ответ

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

Я нашел ответ внутри этого вопроса .

Внутри myapp/__init__.py Мне нужно было создать экземпляр объекта приложения

app = create_app()

app.yaml теперь выглядит так this:

 entrypoint: gunicorn -b :$PORT myapp:app

, где app - экземплярный Flask объект приложения.

...