我有许多单独的机器,每台机器都使用单独的实例化
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的代码先运行)。在Session“A”提交一个对象之前我遇到了问题,但是在我重新实现Session“B”之前,另一个Session“B”在查询中找不到它。
答案 0 :(得分:0)
scoped_session
将Session
包装在线程本地存储对象中;如果你正在做更多的工作来处理线程,你可能想要重构代码以对所有线程使用单个scoped_session
实例,或者直接使用sessionmaker
的结果,而不是再包装它一个用于所有线程,并为每个线程调用Session()
。