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

Zua*_*abi 3 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
Run Code Online (Sandbox Code Playgroud)

但是,该应用程序无法启动,出现错误:

无法从“ package_name.wsgi:app”获得有效的Flask应用程序。

为什么是这样?

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

Zua*_*abi 5

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

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

application = create_app(config)
app = application.app
Run Code Online (Sandbox Code Playgroud)

我什至不必export FLASK_APP=package_name.wsgi:app再做了,如果flask run命令在文件所在的wsgi.py文件夹中执行,则自动发现会起作用。