Python 如何在pymongo中使用fsyncLock()和fsyncUnlock()锁定并发写操作

Python 如何在pymongo中使用fsyncLock()和fsyncUnlock()锁定并发写操作,python,mongodb,pymongo,Python,Mongodb,Pymongo,我试图同时从我的收款中扣除该金额,因此我需要保持该金额的一致性 示例: My balance -> 1000 User 1 -> trying to deduct 700 User 2 -> trying to deduct 800 (Both users are accessing same account using different device) 他们试图在同一时间将这笔钱记入借方。所以我需要并发性 在mongoDB中,我们可以使用fsyncLock()和fsyn

我试图同时从我的收款中扣除该金额,因此我需要保持该金额的一致性

示例:

My balance -> 1000
User 1 -> trying to deduct 700
User 2 -> trying to deduct 800  (Both users are accessing same account using different device)
他们试图在同一时间将这笔钱记入借方。所以我需要并发性

在mongoDB中,我们可以使用fsyncLock()和fsyncUnlock(),但我需要在pymongo(Python)模块中使用此功能。如何实现此功能?

db.fsyncLock()和db.fsyncUnlock()是pymongo无法提供的mongo shell方法。相反,您可以调用fsync管理命令对管理数据库执行相同的操作。比如:

import pymongo
db_host='__put_your_ip_or_hostname_here__'
client = pymongo.MongoClient(db_host)
db = client['admin']
db.command("fsync", lock=True)

但是,正如评论中所说,使用事务来实现并发性,而不是fsynclock。当数据和日志文件夹位于不同的卷/文件系统中时,此命令用于执行文件系统级备份。

用于并发而不是fsynclock。不要在日常操作中使用fsynclock,因为它实际上会锁定整个服务器,因此在您解锁它之前,其他人无法使用它。先生,我已经阅读了fsynclock的概念,现在我清楚它的用法。但是,先生,我没有找到解决上述问题的方法,即如何在更新数据库的同时在python中实现并发性。先生,请给我提个建议。您建议我使用事务来实现并发性,但我无法理解这一点(我是初学者)。因此,请详细说明。中有一些使用多种语言的示例,中有一些使用Python的示例代码。如果您的代码不起作用,请发布您尝试的代码和看到的错误消息。如果您是MongoDB新手,我建议您投入一些时间来了解更多有关概念和语法的信息。好的,先生,首先我将学习,然后我将稍后与您联系。谢谢你的指导