Python 芹菜sqlalchemy在每个查询上打开不同的会话(而不是关闭它)?

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芹

全部。我已经用我的烧瓶应用程序设置了芹菜,我有一个问题,芹菜如何管理sqlalchemy会话。假设我在我的芹菜应用程序中启动我的操作(使用此):

现在,在Flask应用程序的my main view.py中,添加一条路线

@app.route('/testcelery', methods=['GET'])
def testcelery():
    tasks.test_celery.apply_async()
    return 'just test'
一切正常,除了每次我点击/test芹菜,它都会启动一个会话(我使用的是MS SQL SERVER),并且不会关闭/删除它(除非我从命令行键入interrupt芹菜)。它将活动监视器中的许多会话相加

每一个都显示如下:

我在芹菜任务结束时测试了add
db\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()