[英]SQLAlchemy Concurrency and Queries
我有很多单独的机器,每个机器都使用一个单独的实例
Session = scoped_session(sessionmaker(bind=engine))
。
如果机器A运行代码
session = Session()
session.add(Foo(pk=1))
session.commit()
我必须做的是确保机器B运行以下代码时...
session = Session()
result = session.query(Foo).get(1)
... result
将保留机器A创建的Foo
的新行(假定机器A的代码先运行)。 在会话“ A”提交对象之前,我遇到了问题,但是在重新实例化会话“ B”之前,另一个会话“ B”无法在查询中找到它。
scoped_session
将Session
包装在线程本地存储对象中; 如果您需要做更多的工作来处理线程,则可能需要重构代码以对所有线程使用单个scoped_session
实例,或者直接将sessionmaker
的结果(不包装它)再次用于所有线程,然后调用Session()
每个线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.