Skip to main content
 首页 » 编程设计

python之SQLAlchemy "too many clients already"错误

2025年05月04日13kuangbin

我对 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 专家有任何指示吗?

请您参考如下方法:

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

要在 webapp 中正确使用 SqlSoup,您必须使用 SA session 。

参见 this page 上的“访问 session ”部分.

how do I close this idling connection

SqlSoup如raw SA使用连接池,池中的每个连接在idle status util查询时执行。此连接池必须创建一次。