python 查询 MongoDB 数据库pymongo.errors.OperationFailure: cursor id '26777532088498352' not valid at se
来源:互联网 发布:卡洛斯实况巅峰数据 编辑:程序博客网 时间:2024/04/30 09:33
python 查询 MongoDB 数据库。偶尔会遇到
pymongo.errors.OperationFailure: cursor id '26777532088498352' not valid at server
这样的问题。今天看了下文档,找到了原因。
你在用db.collection.find()的时候,它返回的不是所有的数据,而实际上是一个“cursor”。它的默认行为是:第一次向数据库查询 101 个文档,或 1 MB 的文档,取决于哪个条件先满足;之后每次 cursor 中的文档用尽后,查询 4 MB 的文档。另外,find()的默认行为是返回一个 10 分钟无操作后超时的 cursor。如果我一个 batch 的文档十分钟内没处理完,过后再处理完了,再用同一个 cursor id 向服务器取下一个 batch,这时候 cursor id 当然已经过期了,这也就能解释为啥我得到 cursor id 无效的错误了。
Stack Overflow 上有人提出过解决方法,是在 find() 时传入timeout=False来禁用 10 分钟超时的保护措施。但是我觉得这是非常差的办法,因为如果你循环时产生异常,甚至断电或断网,都会导致 MongoDB 服务器资源永远无法被释放。而更好的办法是(我也发在了 Stack Overflow 上),估计一个 batch 大小,让 MongoDB 客户端每次抓取的文档在 10 分钟内能用完,这样客户端就不得不 10 分钟内至少联系服务器一次,保证 cursor 不超时。
具体用法:
for document in db.collection.find().batch_size(30): do_time_consuming_things()
0 0
- python 查询 MongoDB 数据库pymongo.errors.OperationFailure: cursor id '26777532088498352' not valid at se
- pymongo.errors.CursorNotFound: Cursor not found, cursor id: 124891571478
- 解决 MongoDB 的 cursor id is not valid at server 问题
- 解决 MongoDB 的 cursor id is not valid at server 问题
- pymongo.errors.OperationFailure: not authorized on test to execute command { listCollections: 1, cur
- pymongo报错 pymongo.errors.OperationFailure: Authentication failed.
- Python 连接MongoDB数据库手札(PyMongo)
- pymongo.errors.OperationFailure:Overflow sort stage buffered data usage exceeds in internal limit
- python mongodb(pymongo)
- mongodb python driver--pymongo
- python MongoDB+pymongo+Tornado
- pymongo异常-OperationFailure: command SON(...)
- 利用pymongo操作mongoDB数据库
- MongoDB的Python接口 PyMongo
- python操作mongodb之pymongo
- PyMongo简单使用以及操作mongodb数据库
- Python 使用pymongo操作mongodb库
- 在Python中使用pymongo操作mongodb
- python类常用的内置方法
- c++第四次实验
- 292.Nim Game
- 一个关于Map的旅程
- 每天一道ACM(四)
- python 查询 MongoDB 数据库pymongo.errors.OperationFailure: cursor id '26777532088498352' not valid at se
- 【一天一道LeetCode】#94. Binary Tree Inorder Traversal
- linux下乱码问题
- Educational Codeforces Round 13
- 【C】文件读写操作
- 数组去重
- 【bzoj4568】【SCOI2016】【幸运数字】【树上倍增+线性基】
- 豆瓣最受欢迎的影评爬虫(第一个爬虫撒花!)
- 168. Excel Sheet Column Title