【发布时间】:2012-07-10 00:33:45
【问题描述】:
我有两个客户端(python)操作同一个集合,集合用作池,集合中的每条记录只能在一个客户端中使用。我正在使用下面的代码来确保它(它不是关键系统,所以可以容忍一点点错误)。
for i in range(100):
record = collection.find_one({"used1":{"$exists":False}})
record["used1"] = True
collection.save(record)
...do sth I want...
但我发现有时两个客户端不同步,本地客户端获取记录,10秒后远程客户端也会相同记录。
其实如果2个客户端在不到2秒的时间内拿到记录,那是可以接受的,但是10秒太长了。
我认为这里存在缓冲区/同步问题,我可以做些什么来减少此类问题?
【问题讨论】:
-
您使用的是什么版本的 MongoDB 和 Python 客户端库?
-
在此处阅读有关原子更新和 findAndModify 的信息:mongodb.org/display/DOCS/Atomic+Operations