【问题标题】:Why do I get the error "A valid Flask application was not obtained from..." when I use the flask cli to run my app?当我使用烧瓶 cli 运行我的应用程序时,为什么会收到错误“未从...获得有效的 Flask 应用程序”?
【发布时间】:2018-09-24 16:30:26
【问题描述】:

我尝试使用烧瓶 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

但是,应用程序没有启动,我收到错误:

未从“package_name.wsgi:app”获取有效的 Flask 应用程序。

这是为什么?

我使用gunicorn时可以正常启动我的应用程序,即gunicorn package_name.wsgi:app

【问题讨论】:

    标签: flask flask-cli


    【解决方案1】:

    我的 create_app 函数没有返回类 flask.app.Flask 的对象,而是返回类 connexion.apps.flask_app.FlaskApp 的对象,因为我使用的是 connexion 框架。

    在我的 wsgi.py 文件中,我可以简单地设置:

    application = create_app(config)
    app = application.app
    

    我什至不必再执行export FLASK_APP=package_name.wsgi:app,如果在wsgi.py 文件所在的文件夹中执行flask run 命令,自动检测就可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 2021-05-11
      • 2020-09-06
      • 2016-02-08
      • 2021-12-22
      • 1970-01-01
      • 2020-09-04
      相关资源
      最近更新 更多