我尝试使用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
答案 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
命令,自动发现就可以了。