Python 如何解决Pymongo的这个错误?未找到指针id pymongo
我在MongoDB中获取某个集合的全部数据,过了一段时间(如30或60分钟),脚本会引发以下错误: pymongo.errors.CursorNotFound:未找到光标id 1801580172063793986,完整错误:{'ok':0.0,'errmsg':'CursorID 1801580172063793986未找到','code':43,'codeName':'CursorNotFound'} 此错误发生在24k文档之后。我正在使用Django和Pymongo连接到本地服务器中的数据库。该收藏有大约6万份文档 这就是我获取数据的方式:Python 如何解决Pymongo的这个错误?未找到指针id pymongo,python,django,mongodb,ubuntu,pymongo,Python,Django,Mongodb,Ubuntu,Pymongo,我在MongoDB中获取某个集合的全部数据,过了一段时间(如30或60分钟),脚本会引发以下错误: pymongo.errors.CursorNotFound:未找到光标id 1801580172063793986,完整错误:{'ok':0.0,'errmsg':'CursorID 1801580172063793986未找到','code':43,'codeName':'CursorNotFound'} 此错误发生在24k文档之后。我正在使用Django和Pymongo连接到本地服务器中的数据
client = MongoClient(settings.MONGO_HOST, settings.MONGO_PORT)
collection = client[settings.MONGO_DB].collection
cursor = collection.find(no_cursor_timeout=True)
for document in cursor:
# getting the data from the user
以防万一,我正在使用:
- Python 3.8
- Django 3.1.4
- Pymongo 3.11.0
- Mongod 4.4.2(用于本地服务器)
- Ubuntu 20.04
cursorTimeoutMillis
参数全局设置光标超时
在终端中,键入:
$mongod--setParameter cursorTimeoutMillis=600000
请参阅和相关的链接票据
服务器可以销毁开放游标正在使用的会话,这会导致这些游标无法使用
可能会有帮助,尽管在我看来,问题在服务器端,目前尚未解决。这不是错误的解决方案,但这是避免错误的一种方法。 为了尽可能短地使用光标,您可以将所有数据保存在列表或类似的内容中
client = MongoClient(settings.MONGO_HOST, settings.MONGO_PORT)
collection = client[settings.MONGO_DB].collection
cursor = collection.find(no_cursor_timeout=True)
collection_data = [document for document in cursor]
for document in collection_data:
# using the data
我已经试过了,但我还是犯了那个错误