Почему я получаю сообщение об ошибке "Действительное приложение Flask не было получено из...", когда я использую колбу cli для запуска своего приложения?

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

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

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

2 ответа

Моя функция 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 файл есть.

      application = create_app(config)
app = application.app
App = app.app

Для меня я только что создал еще одну переменную, указывающую на тип connexion.app.Flask, и установил среду, как показано ниже.

      export FLASK_APP= __main__:App
flask shell 
Другие вопросы по тегам