我在一个更大的python项目中使用生成的openapi python flask服务器(由openapi-generator-cli-4.2.3.jar生成)。其中一个openapi控制器需要访问我的数据库。另一个控制器需要一个对象列表。这两个信息都已经被python项目使用了。
我的想法是将所有需要的信息作为变量传递给main方法(在__main__.py中)。但是如何将变量传递给控制器或其中的函数呢?还有其他(更好的)方法吗?
openapi main方法:
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
发布于 2020-02-24 21:38:07
你应该在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
https://stackoverflow.com/questions/60376413
复制相似问题