Почему я получаю сообщение об ошибке «Действительное приложение Flask не было получено из ...», когда я использую колбу cli для запуска своего приложения? - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь использовать колбу cli для запуска моего приложения, т.е. flask run.Я использую переменную окружения FLASK_APP для указания на мое приложение, т.е. export FLASK_APP=package_name.wsgi:app

. В моем файле wsgi.py я создаю приложение с заводской функцией, т.е. app = create_app(config), и мой метод create_app выглядит следующим образом:this:

def create_app(config_object=LocalConfig):
    app = connexion.App(config_object.API_NAME,
                    specification_dir=config_object.API_SWAGGER_DIR,
                    debug=config_object.DEBUG)
    app.app.config.from_object(config_object)
    app.app.json_encoder = JSONEncoder
    app.add_api(config_object.API_SWAGGER_YAML,
            strict_validation=config_object.API_SWAGGER_STRICT,
            validate_responses=config_object.API_SWAGGER_VALIDATE)
    app = register_extensions(app)
    app = register_blueprints(app)
    return app

Однако приложение не запускается, я получаю сообщение об ошибке:

Действительное приложение Flask не было получено из "package_name.wsgi: app".

Почему это так?

Я могу нормально запускать свое приложение, когда использую Gunicorn, т.е. gunicorn package_name.wsgi:app

1 Ответ

0 голосов
/ 25 сентября 2018

Моя функция create_app не возвращала объект класса flask.app.Flask, но объект класса connexion.apps.flask_app.FlaskApp, потому что я использую инфраструктуру подключения.

В моем файле wsgi.py я мог просто установить:

application = create_app(config)
app = application.app

Мне даже больше не нужно было делать export FLASK_APP=package_name.wsgi:app, автообнаружение работало, если была выполнена команда flask runв папке, где находится файл wsgi.py.

...