【问题标题】:Is it possible to create an aggregation in Pymongo with no timeout for the cursor?是否可以在 Pymongo 中创建一个没有光标超时的聚合?
【发布时间】:2017-03-08 00:36:30
【问题描述】:

聚合看起来像:

res = Things.objects._collection.aggregate(pipeline,
            allowDiskUse=True,
            batchSize=101,
            noCursorTimeout=True
        )

失败了

OperationFailure:无法识别的字段“noCursorTimeout”

从 Pymongo 文档中可以看出 no_cursor_timeout 可以与 find() 一起使用,但是我一直没有成功为 aggregate() 找到可比较的 **kwargs。

我不想使用 setParameter 或 maxTimeMS。

更新:

来自 MongoDB 的 Jira 站点:SERVER-15042

OP_QUERY 标头中的 NoCursorTimeout 位可防止服务器关闭空闲超过 10 分钟的游标。如果客户可能花费超过 10 分钟来处理一批结果,则可以设置此位。

“aggregate”和“parallelCollectionScan”命令也应该允许客户端关闭光标超时。

对这张票的回应是:

我们故意不支持 noCursorTimeout。理由 当我们实现游标保持活动时,需要这个就会消失。那 将在 SERVER-6036 中跟踪工作。

看着SERVER-6036

  • 更新时间:2016 年 9 月 14 日下午 3:53:05 GMT+0000
  • 状态:打开
  • 解决方案:未解决
  • 修复版本/秒:已计划但未计划

如果我已正确阅读文档,则聚合()尚不存在游标无超时选项。

【问题讨论】:

    标签: python find aggregate pymongo


    【解决方案1】:

    您说得对,不能在单个聚合游标上禁用游标超时。但是我们提供了一个全局配置设置cursorTimeoutMillis,您可以将其增加到一个很大的数字:

    mongod --setParameter cursorTimeoutMillis=600000  # 10 minutes
    

    有关 MongoDB 版本信息以及如何在运行时设置此参数,请参阅 SERVER-8188

    【讨论】:

      猜你喜欢
      • 2017-03-18
      • 2010-10-13
      • 2022-01-07
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      相关资源
      最近更新 更多