2

我对 python 和金字塔框架相当陌生。最近我被介绍给 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 大师的任何指针?

4

1 回答 1

1

似乎您dbEngine1在对您的 Pyramid 应用程序的每个请求上创建。

为了在 webapp 中正确使用 SqlSoup,您必须使用 SA 会话。

请参阅本页上的“访问会话”部分。

如何关闭此空闲连接

SqlSoup 等原始 SA 使用连接池,池中的每个连接处于空闲状态 util 查询执行。此连接池必须创建一次。

于 2011-12-10T07:58:37.687 回答