Почему я получаю сообщение об ошибке "Действительное приложение 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