0

我有许多单独的机器,每台机器都使用单独的实例化

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”。

4

1 回答 1

0

scoped_session包装Session在线程本地存储对象中;如果您正在做更多的工作来处理线程,您可能希望重构代码以对所有线程使用单个scoped_session实例,或者sessionmaker直接使用结果而不包装它,再次为所有线程使用一个实例,并Session()为每个线程调用.

于 2013-07-08T21:08:21.187 回答