Python 连接池耗尽时会发生什么情况?

Python 连接池耗尽时会发生什么情况?,python,sqlalchemy,Python,Sqlalchemy,我正在阅读SQLAlchemy的连接池,它默认为5个连接,默认情况下会溢出到10个 如果超过缓存连接数,会发生什么情况?后续请求是否在空闲连接可用之前排队,或者是否将创建未进入池的新连接 另外,当池“溢出”到其默认最大值10时,未使用的连接会发生什么情况?这些连接是在默认时间后断开的(与标准池一样),还是比标准池释放得更猛烈 当签出的连接数达到pool\u size中设置的大小时,将返回达到此限制的其他连接当这些附加连接返回到池时,它们被断开并丢弃。因此,池将允许的同时连接总数为pool\u s

我正在阅读SQLAlchemy的连接池,它默认为5个连接,默认情况下会溢出到10个

如果超过缓存连接数,会发生什么情况?后续请求是否在空闲连接可用之前排队,或者是否将创建未进入池的新连接

另外,当池“溢出”到其默认最大值10时,未使用的连接会发生什么情况?这些连接是在默认时间后断开的(与标准池一样),还是比标准池释放得更猛烈

当签出的连接数达到
pool\u size
中设置的大小时,将返回达到此限制的其他连接当这些附加连接返回到池时,它们被断开并丢弃。因此,池将允许的同时连接总数为
pool\u size+max\u overflow
,池将允许的“休眠”连接总数为
pool\u size

因此,是的,溢出连接比正常休眠连接更容易释放


如果您实际查看
QueuePool.\u do\u get()
,您将看到,当连接计数等于池大小+溢出时,它会引发一个
TimeoutError
,并且在调用
connect()
后不久不会返回到池的连接。

您正在阅读有关队列池的信息,它管理数据库连接以获得更好的性能。它通过保持打开的空闲连接来实现这一点,以防以后需要重用它们。它将保持打开的连接数为pool_size=5(默认值)。如果打开第六个连接,只要队列中的一个连接处于空闲状态,它就会关闭。如果没有空闲队列池,队列池将打开其他队列池,最大溢出=10(默认值)。如果你再这样做,你就会得到一个错误。 但是,这两个参数都是可配置的。将pool_size=0设置为具有无限打开的连接。

hmm,在指向文档的链接中,查看QueuePool.\uuuu init\uuuuuu,文档字符串显示“
pool\u size
可以设置为0以表示没有大小限制”