栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

pymongo.errors.CursorNotFound:游标ID“ ...”在服务器上无效

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pymongo.errors.CursorNotFound:游标ID“ ...”在服务器上无效

由于光标在服务器上超时(不活动10分钟后),因此出现此错误。

从pymongo文档中:

如果MongoDB中的游标已打开很长时间而未对其执行任何操作,则它们可能会在服务器上超时。尝试迭代游标时,这可能导致引发CursorNotFound异常。

当您调用该

collection.find
方法时,它查询一个集合,并将光标返回到文档。要获取文档,请迭代光标。当您遍历游标时,驱动程序实际上是在向MongoDB服务器发出请求以从服务器获取更多数据。每个请求中返回的数据量由
batch_size()
方法设置。

从文档中:

限制一批中返回的文档数。每个批次都需要往返服务器。可以对其进行调整以优化性能并限制数据传输。

将batch_size设置为较小的值将帮助您解决超时错误错误,但是它将增加访问MongoDB服务器获取所有文档的次数。

默认批处理大小:

对于大多数查询,第一批返回101个文档或刚好超过1兆字节的文档。批处理大小不会超过BSON文档的最大大小(16 MB)。

没有通用的“正确”批次大小。您应该使用不同的值进行测试,并查看适合您的用例的合适值,即在10分钟的窗口中可以处理多少个文档。

不得已而为您

no_cursor_timeout=True
。但是,您需要确保在处理完数据后关闭游标。

如何避免以下情况

try/except

cursor = collection.find(     {"x": 1},     no_cursor_timeout=True)for doc in cursor:    # do something with doccursor.close()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624618.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号