Python 如何检查作用域_会话是否已关闭
如果一个Python 如何检查作用域_会话是否已关闭,python,session,sqlalchemy,Python,Session,Sqlalchemy,如果一个scoped_会话已经关闭,有没有办法检查Python的SQLAlchemy?换句话说,检查是否已调用会话.close方法 示例: session_maker = sessionmaker() session_maker.configure(...) session = scoped_session(session_maker) hasclosed = f(session) #should return False session.close() hasclosed = f(se
scoped_会话
已经关闭,有没有办法检查Python的SQLAlchemy?换句话说,检查是否已调用会话.close
方法
示例:
session_maker = sessionmaker()
session_maker.configure(...)
session = scoped_session(session_maker)
hasclosed = f(session) #should return False
session.close()
hasclosed = f(session) #should return True
显然,可以重写
close
方法,使其保持这种状态,但我想知道是否有对此的内置支持。是否要解释为什么要这样做?您可以调用,甚至可以调用registry.has()。@QuentinPradet:因为我想确保调用close
。对于创建的每个会话,都会启动一个线程,定期检查会话是否已关闭。如果没有,并且达到超时,会话将由该线程自动关闭。我不熟悉sqlalchemy,但我认为作用域_会话的全部要点是它是线程本地的?而且,听起来好像你在试图修补坏代码。无论如何,remove()或registry.has()有什么问题吗?在我的例子中,我想在运行一些代码之前检查会话是否仍然有效。虽然这是针对正常会话而非范围内的会话
,但使用session.is\u active
成功了。