pymongo,save 保存一个新记录,下一行立即find_one,找不到,求解。

2013-08-14 18:27:39 +08:00
 likuku
pymongo,访问localhost机器(debian 6.0)的mongodb,

save 保存一个新记录,立即find_one,找不到。

save 保存一个新记录,对pymongo.connection.Connection()实例执行disconnect(),立即find_one,至少30%机率找不到。

自己试出的解法:
save 保存一个新记录,time.sleep(1)#等待1秒,立即find_one,100%找到。

但这样子在操纵很多数据时,很多个1秒钟的等待也不是个短时间了。

有人碰到类似状况么?您有更好解法么?
7021 次点击
所在节点    MongoDB
3 条回复
solos
2013-08-14 18:42:22 +08:00
mongodb默认是延时插入的,可以在插入的时候用fsync=True选项强制刷到磁盘
shiny
2013-08-14 18:43:49 +08:00
你 w=1 了吗
likuku
2013-08-22 18:40:57 +08:00
@solos @shiny 感谢两位!这办法好用。

稍微有点曲折,在测试这两位提供的解法时,发现这些属性找不到。发觉原来机器上 pymongo 是直接拿 apt-get 安装的,版本只有 1.7。

在线官方文档已经是 pymongo 2.5了。遂 apt-get 卸载旧版 pymongo,安装 python-setuptools,然后用 easy_install pymongo 装上最新版 pymongo,一切都顺畅了。

pymongo 1.7 和 2.6 还有 ObjectId 不一样:

#from pymongo.objectid import ObjectId # is pymongo 1.7

# bson is pymongo 2.5.2
from bson.objectid import ObjectId

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/79086

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX