当我使用flask cli运行我的应用程序时,为什么会出现错误“未从...获得有效的Flask应用程序”?

时间:2018-09-24 16:30:26

标签: flask flask-cli

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

时,我可以正常启动我的应用

1 个答案:

答案 0 :(得分:2)

我的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,如果在flask run文件所在的文件夹中执行了wsgi.py命令,自动发现就可以了。