pymongo交易在生产上停滞不前,但在本地工作上停滞了。
def __delete_save_with_transaction(self, doc, dups, **kwargs):
def callback(_session):
collection = _session.client[db][collection]
a = collection.delete_many({'_id': {'$in': [i['_id'] for i in dups]}}, session=_session)
b = collection.insert_one(doc, session=_session)
print(a, b)
return a, b
with self.__client.start_session() as session:
session.with_transaction(callback,
read_concern=ReadConcern('local'),
write_concern=WriteConcern('majority'),
read_preference=ReadPreference.PRIMARY
)
回调函数按预期方式工作。它删除文档并添加新文档。它还打印a
和b
。但是__delete_save_with_transaction
函数卡住了,不返回任何东西。
我试图降级pymogo
并使用session.commit_transaction()
,但结果相同。
我尝试在本地进行,但是对于本地来说一切正常。生产数据库包含3个副本集中的6000万个节点,其中一个副本延迟24小时。