【发布时间】:2013-04-25 22:20:01
【问题描述】:
我有一个使用 Mongoengine 在 Django 上运行的 Web API,它执行以下操作
print "Saving", data
modelObj.dataList.append(data)
modelObj.save()
我还有一个 API 会在一个非常紧凑的循环中调用此函数,这会导致以下日志:
Saving {'answer': u'3'}
[25/Apr/2013 17:12:00] "POST /submit HTTP/1.1" 200 10
Saving {'answer': u'2'}
Saving {Saving {'answer': u'5'}}
[25/Apr/2013 17:12:00] "POST /submit HTTP/1.1" 200 30
[25/Apr/2013 17:12:00] "POST /submit HTTP/1.1" 200 30
[25/Apr/2013 17:12:00] "POST /submit HTTP/1.1" 200 10
Saving {'answer': u'1'}
[25/Apr/2013 17:12:00] "POST /submit HTTP/1.1" 200 10
显然,保存是同时进行的。输出是我很少看到所有 5 个结果都写入数据库。我在这里忽略了一些真正基本的东西吗?
更新:使用 Mongoengine 0.7.9。文档状态:
Changed in version 0.5: In existing documents it only saves changed fields using
set / unset. Saves are cascaded and any DBRef objects that have changes are saved as well.
不确定这是否反驳了我的理论......
【问题讨论】:
-
翻遍逻辑,如果我拉出一个modelObj(A),其他并发方法对该modelObj的任何操作都不会反映。大概调用“保存”是绝对操作而不是加法...
标签: python django mongodb mongoengine