简体   繁体   English

如何使用flask运行Connextion / Flask应用程序?

[英]How to run a Connextion/Flask app using flask?

We have an existing flask app that we'd like to move to connexion. 我们有一个现有的烧瓶应用程序,我们想移到连接。 Can the app still be run using flask, eg 'flask run'. 该应用程序是否仍可以使用烧瓶运行,例如“烧瓶运行”。 We use a 'manage' plugin in the cli that we'd like to keep using. 我们在我们想继续使用的CLI中使用“管理”插件。

We tried modifying the app factory method to use the connexion flask app. 我们尝试修改app工厂方法以使用connexion flask应用程序。 Using 'run flask' we get an error that 'app' is not a flask app. 使用“运行烧瓶”,我们得到一个错误,即“应用程序”不是烧瓶应用程序。

    app = connexion.FlaskApp(__name__.split('.')[0])
    app.add_api('some_api.yml')
    return app

Also tried creating both apps. 还尝试创建两个应用程序。

    app = Flask(__name__.split('.')[0])
    connexion_app = connexion.FlaskApp(__name__.split('.')[0])
    connexion_app.add_api('./api/resources/reload_spec.yml')
    return app

Running 'flask run' with the first approach gives an error that 'app' is not a valid flask app: RuntimeError: app is not a valid flask.app.Flask app instance 使用第一种方法运行“烧瓶运行”会给出一个错误,指出“应用程序”不是有效的烧瓶应用程序:RuntimeError:应用程序不是有效的flask.app.Flask应用程序实例

The second approach does not seem to be generating the UI, which is not surprising since the connexion_app is not being run. 第二种方法似乎没有生成UI,这并不奇怪,因为未运行connexion_app。

Is this even possible? 这有可能吗?

    # factory.py

    # connexion app
    app = connexion.FlaskApp(__name__.split('.')[0])
    app.add_api('some_api.yml')

    # flask app
    app = app.app
    # flask-specific code
    return app

This works with flask run, and displays the swagger docs. 这适用于flask run,并显示swagger文档。

$ flask run
 * Serving Flask app "app/app.py"
<snip>
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)`

# app.py
app = connexion.FlaskApp(__name__.split('.')[0])
app.add_api('some_api.yml')
app.run(port=8080)

Above should run with python app.py 上面应该用python app.py运行

To generate UI, use pip install connexion[swagger-ui] and navigate to {base_path}/ui/ 要生成UI,请使用pip install connexion[swagger-ui]并导航至{base_path}/ui/

Based on https://github.com/zalando/connexion 基于https://github.com/zalando/connexion

app = connexion.FlaskApp(__name__.split('.')[0])更改为app = connexion.App(__name__.split('.')[0])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM