聚合看起来像:
res = Things.objects._collection.aggregate(pipeline,
allowDiskUse=True,
batchSize=101,
noCursorTimeout=True
)
并失败了
OperationFailure: unrecognized field ‘noCursorTimeout’
从Pymongo文档中可以看出no_cursor_timeout可以和find()一起使用,但是我找不到为aggregate()找到类似的** kwargs是不成功的.
我不想使用setParameter或maxTimeMS.
更新:
来自MongoDB的Jira站点:SERVER-15042
OP_QUERY标头中的NoCursorTimeout位可防止服务器关闭空闲超过10分钟的游标.如果客户可能花费超过10分钟处理一批结果,客户可以设置此位.
“aggregate”和“parallelCollectionScan”命令也应允许客户端关闭游标超时.
这张票的回复是:
We intentionally do not support noCursorTimeout. The rationale for
needing this will go away when we implement cursor keepalive. That
work will be tracked in SERVER-6036.
>更新时间:2016年9月14日下午03:53:05 GMT 0000
>状态:打开
>决议:未解决
>修复版本:已计划但未计划
如果我已正确读取文档,则对于aggregate()还不存在游标no timeout选项.
解决方法:
你是对的,不能在各个聚合游标上禁用游标超时.但是我们提供了一个全局配置设置,cursorTimeoutMillis,你可以增加到一个很大的数字:
mongod --setParameter cursorTimeoutMillis=600000 # 10 minutes
有关MongoDB版本信息,请参阅SERVER-8188,以及如何在运行时设置此参数.