0

我在一个较大的 python 项目中使用生成的 openapi python 烧瓶服务器(由 openapi-generator-cli-4.2.3.jar 生成)。其中一个 openapi 控制器需要访问我的数据库。另一个控制器需要一个对象列表。这两个信息都已被 python 项目使用。

我的想法是将所有需要的信息作为变量传递给 main 方法(在 __main__.py 中)。但是如何将变量传递给控制器​​或其中的函数呢?还有其他(更好的)方法吗?

openapi主要方法:

def main(): # add: db_connection:dict, my_object:list
    app = connexion.App(__name__, specification_dir='./openapi/')
    app.app.json_encoder = encoder.JSONEncoder
    app.add_api('openapi.yaml',
                arguments={'title': 'My API'},
                pythonic_params=True)
    app.run(port=8080)

谢谢您的帮助!

我在 github 上找到了以下问题,但没有实际的解决方案: https ://github.com/zalando/connexion/issues/516

4

1 回答 1

0

您应该在 de main 函数之外实例化您的变量:

db = SQLAlchemy()
ma = Marshmallow()
logger = factory_logger()

def init_api():
    app = connexion.App(__name__, specification_dir="./swagger/")
    app.add_api("swagger.yaml", arguments={"title": "files"})
    app.app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    db.init_app(app.app)
    ma.init_app(app.app)
    app.app.before_request(before_request)
    return app

并将此变量导入您要使用的位置:

from my_server import db

或者

from my_server import logger
于 2020-02-24T13:38:06.533 回答