gpt4 book ai didi

python - Mongodb FindAndModify 多进程使用问题

转载 作者:可可西里 更新时间:2023-11-01 10:44:55 27 4
gpt4 key购买 nike

我使用 python 2.6.6、pymongo 1.9、mongodb 1.6.5、Ubuntu 10.10

我在使用 FindAndModify 命令时遇到了奇怪的问题。

我有两个相同的进程同时运行。他们使用 FindAndModify(实现某种队列)从数据库中获取记录。

所以为了让只有一个进程获得记录,我这样做了:

find_and_modify({query:{"status":"loaded"},update:{"$set": {"status":"analyzing"}}) 

这是这样工作的:

1 个进程使用 findAndModify 获取作业2 进程使用 findAndModify 获取工作1 个过程制作作业并保存结果2 过程 make job 和保存结果

因此进程获取状态为“已加载”的记录并将其更改为“正在分析”。如果这个操作是原子的,第二个进程不应该看到这个记录,因为它不满足查询。

但有时两个进程同时获取同一条记录,这就是问题所在。

谁能告诉我为什么会发生这种情况以及我如何使用 mongodb 实现队列,这将锁定文档不被多个进程读取?

谢谢。

最佳答案

虽然试图在独立脚本中重现此错误,但发现问题不在 MongoDB 中。 MongoDB 按照手册中的说明工作,因此问题现在已关闭。

对于那些发现相同错误的人 - 不要忘记检查其他线程/进程以在运行时修改队列数据。

关于python - Mongodb FindAndModify 多进程使用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4738296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com