5

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

4

1 回答 1

11

我的 create_app 函数没有返回 class 的对象,flask.app.Flask而是返回 class 的对象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文件夹中执行命令,自动发现就可以工作。

于 2018-09-25T12:05:22.603 回答