Python 如何解决Pymongo的这个错误?未找到指针id pymongo

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连接到本地服务器中的数据

我在MongoDB中获取某个集合的全部数据,过了一段时间(如30或60分钟),脚本会引发以下错误:

pymongo.errors.CursorNotFound:未找到光标id 1801580172063793986,完整错误:{'ok':0.0,'errmsg':'CursorID 1801580172063793986未找到','code':43,'codeName':'CursorNotFound'}

此错误发生在24k文档之后。我正在使用Django和Pymongo连接到本地服务器中的数据库。该收藏有大约6万份文档

这就是我获取数据的方式:

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

我已经试过了,但我还是犯了那个错误