SqlAlchemy “客户端过多”错误
我刚接触Python和Pyramid框架。最近我开始使用SQLSoup来处理我的数据库需求(使用Postgres)。
dbEngine1 = SqlSoup(settings['sqlalchemy.db1.url'])
users = dbEngine1.users.fetchall()
一切运行得很好,不过在使用Pyramid应用一段时间后,我遇到了一个错误信息。我必须强制关闭Pyramid,才能释放所有在Postgres中闲置的连接(大约有50个闲置连接,才会出现下面的异常)。
sorry, too many clients already
我的问题是,怎么才能关闭这些闲置的连接?我尝试添加了一行代码,如下所示,但没有帮助。
dbEngine1 = SqlSoup(settings['sqlalchemy.db1.url'])
users = dbEngine1.users.fetchall()
dbEngine1.engine.connect().close()
有没有SQLAlchemy方面的高手能给点建议?
1 个回答
1
看起来你在每次请求你的Pyramid应用时都创建了一个dbEngine1
。
要正确使用SqlSoup在网页应用中,你必须使用SA会话。
可以查看这个页面上的“访问会话”部分。
我该如何关闭这个闲置的连接?
SqlSoup和原始的SA一样,使用了连接池,连接池中的每个连接在闲置状态下,直到执行查询时才会被使用。这个连接池只需要创建一次。