我是python和pyramid框架的新手。最近我被介绍到SQLSoup来处理我的数据库(postgres)需求。
dbEngine1 = SqlSoup(settings['sqlalchemy.db1.url'])
users = dbEngine1.users.fetchall()
一切都运行良好,但在使用金字塔应用程序一小段时间后,我收到此错误消息。我必须杀死金字塔以释放postgres中的所有空闲连接(在抛出异常之前大约50个空闲连接)
sorry, too many clients already
我的问题是,如何关闭此空闲连接,我尝试添加一行代码,如下所示,但它没有帮助。
dbEngine1 = SqlSoup(settings['sqlalchemy.db1.url'])
users = dbEngine1.users.fetchall()
dbEngine1.engine.connect().close()
来自SQLAlchemy大师的任何指针?
答案 0 :(得分:1)
好像你在向你的Pyramid应用程序的每个请求上创建dbEngine1
。
为了正确使用webapp中的SqlSoup,您必须使用SA Sessions。
请参阅this page上的“访问会话”部分。
原始SA等SqlSoup使用连接池,每个连接在池中处于空闲状态的util查询执行。此连接池必须创建一次。如何关闭此空闲连接