【pymongo】mongodb cursor id not valid error

本文介绍了解决MongoDB Cursor ID无效错误的方法。当遍历数据集的时间超过10分钟,未及时从数据库获取数据时会发生此错误。文章提供了几种解决方案,包括取消timeout限制并关闭游标、限制一次获取的数据量及使用no_cursor_timeout参数。

参考来源:

http://stackoverflow.com/questions/10298354/mongodb-cursor-id-not-valid-error

http://stackoverflow.com/questions/24199729/pymongo-errors-cursornotfound-cursor-id-not-valid-at-server

 

mongodb cursor id not valid error是一个超时错误

当使用for  c  in  col.find()时,数据库会一次性返回很多数据,如果处理这些数据的时间超过10分钟,一直没有像数据库获取后续数据,则会出现上述错误。

 

解决方案:

取消timeout限制,在结束遍历后close()游标。

cursor = coll.find(timeout=False)
for c in cursor:
    ...
    ...
cursor.close()

 

 

其他方案:

上面那个方案是我使用后成功的。还有几种方案,我尝试了一下,无效,不知道为什么。

解决方案2:

用batch_size()限制一次获取的数据量

for c in col.find().batch_size(20):
    ...

 

解决方案3:

用no_cursor_timeout参数去掉时间限制。注意后面要close()游标。

cursor=db.images.find(no_cursor_timeout=True)
for i in cursor:
   .....
   .....
cursor.close()

 

转载于:https://www.cnblogs.com/dplearning/p/6052291.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值