是否可以在Pymongo中创建聚合而没有光标超时?

时间:2016-10-25 20:08:27

标签: python find aggregate pymongo

聚合看起来像:

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分钟处理一批结果,客户可以设置此位。

"聚合"和" parallelCollectionScan"命令应该允许客户端关闭光标超时。

对此票证的回复是:

  

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

查看SERVER-6036

  • 更新时间:2016年9月14日下午03:53:05 GMT + 0000
  • 状态:OPEN
  • 决议:未解决
  • 修复版本:已计划但尚未安排

如果我已正确阅读文档,则对于aggregate()还不存在游标no timeout选项。

1 个答案:

答案 0 :(得分:6)

您正确无法在单个聚合游标上禁用游标超时。但我们提供了一个全局配置设置cursorTimeoutMillis,您可以将其增加到很多:

mongod --setParameter cursorTimeoutMillis=600000  # 10 minutes

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