python报错:pymongo.errors.CursorNotFound: Cursor not found

末蓝、 2021-10-13 22:24 317阅读 0赞

今天在做查询mongo并遍历其中url做下载的工作时,报了下面的错误

pymongo.errors.CursorNotFound: Cursor not found

刚开始以为是逻辑处理的不正确,最后找到原因是mongo自身的问题,默认在10分钟内如果没有返回,就会报这个错,就是说如果你的查询语句查询数据量大,并且在十分钟内对这些数据没有处理完成,就会报这个错

解决方法:

1、设置no_cursor_timeout = True,永不超时,游标连接不会主动关闭,需要手动关闭

  1. demos = db.col.find({},no_cursor_timeout = True)
  2. for cursor in demos:
  3. do_something()
  4. demos.close() # 关闭游标

2、设置batch_size返回文档数,默认应该是20个文档(记不清了233333),可以设置小一些

  1. #每次只返回一个文档
  2. demos = db.col.find({}).batch_size(1)
  3. for cursor in demos:
  4. do_something()

注意:这种方法仍然会出现可能超过10分钟任然没有返回,比如你在do_something里进行一些十分耗时的操作,具体采用哪种方法按实际情况而定

发表评论

表情:
评论列表 (有 0 条评论,317人围观)

还没有评论,来说两句吧...

相关阅读