Python 芹菜sqlalchemy在每个查询上打开不同的会话(而不是关闭它)?
全部。我已经用我的烧瓶应用程序设置了芹菜,我有一个问题,芹菜如何管理sqlalchemy会话。假设我在我的芹菜应用程序中启动我的操作(使用此): 现在,在Flask应用程序的my main view.py中,添加一条路线Python 芹菜sqlalchemy在每个查询上打开不同的会话(而不是关闭它)?,python,flask,sqlalchemy,celery,Python,Flask,Sqlalchemy,Celery,全部。我已经用我的烧瓶应用程序设置了芹菜,我有一个问题,芹菜如何管理sqlalchemy会话。假设我在我的芹菜应用程序中启动我的操作(使用此): 现在,在Flask应用程序的my main view.py中,添加一条路线 @app.route('/testcelery', methods=['GET']) def testcelery(): tasks.test_celery.apply_async() return 'just test' 一切正常,除了每次我点击/test芹
@app.route('/testcelery', methods=['GET'])
def testcelery():
tasks.test_celery.apply_async()
return 'just test'
一切正常,除了每次我点击/test芹菜,它都会启动一个会话(我使用的是MS SQL SERVER),并且不会关闭/删除它(除非我从命令行键入interrupt芹菜)。它将活动监视器中的许多会话相加
每一个都显示如下:
我在芹菜任务结束时测试了adddb\u session.close()
或db\u session.remove()
,但仍然不起作用。有人知道原因是什么吗
编辑:这是我在database.py中创建的引擎和会话
engine = create_engine('connection string')
db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
您在哪里创建并保持SQLAlchemy引擎对象?引擎处理连接池-如果每次创建会话时都要创建引擎,则可能会有一组引擎,每个引擎都保存在一个会话的“池”中。我在文件database.py
中创建了引擎和会话。我已经将代码片段添加到op中。通过执行from.database import db\u session
,可以从其他代码建立数据库连接。这样做对吗?
engine = create_engine('connection string')
db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()