The Engine has logic which can detect disconnection events and refresh the pool automatically.
When the Connection attempts to use a DBAPI connection, and an exception is raised that corresponds to a “disconnect” event, the connection is invalidated. The Connection then calls the Pool.recreate() method, effectively invalidating all connections not currently checked out so that they are replaced with new ones upon next checkout.
连接未激活。但是您可以在
Pool
对象的帮助下重新启动连接这在documentation中有详细描述:
还可以查看链接中的代码示例。它真的很整洁
如果存在一个已从池中签出的连接,那么这些连接将仍然处于活动状态,因为它们正被某个对象引用
有关详细信息,请参阅以下链接。 https://github.com/sqlalchemy/sqlalchemy/blob/master/lib/sqlalchemy/engine/base.py#L2512-L2539https://docs.sqlalchemy.org/en/13/core/connections.html#engine-disposalhttps://docs.sqlalchemy.org/en/13/core/connections.html#sqlalchemy.engine.Engine.dispose
如果您正在使用QueuePool(默认情况下,如果您在创建引擎对象时未指定任何poolClass),并且不希望任何连接保持活动状态,则可以关闭连接[conn.close()或session.close()],从而将连接返回到池(称为签入连接)。稍后,当您在复制作业完成后调用engine.dispose()时,这将真正负责关闭连接,而不会使任何签入连接保持活动状态
相关问题 更多 >
编程相关推荐