Traceback (most recent call last):
File "from_mongo.py", line 27, in <module>
for sale in pm.events.find({"type":"sale", "date":{"$gt":now-(_60delta+_2delta)}}, no_cursor_timeout=True, batch_size=100):
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 968, in __next__
if len(self.__data) or self._refresh():
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 922, in _refresh
self.__id))
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 838, in __send_message
codec_options=self.__codec_options)
File "/usr/local/lib/python2.7/dist-packages/pymongo/helpers.py", line 110, in _unpack_response
cursor_id)
pymongo.errors.CursorNotFound: cursor id '1025112076089406867' not valid at server
我还尝试了更大或更小的批量大小,根本没有no_cursor_timeout。我甚至设法在一个非常小的集合(200个带有id和标题的文档)上得到这个错误。当数据库没有响应时(重插入)似乎会发生这种情况。该设置是由3个副本集(3个mongodb实例)组成的集群,mongodb 3.0。
答案 0 :(得分:2)
根据回溯中的行号,看起来你正在使用上周发布的PyMongo 3。您是否在分片群集中使用多个mongos服务器?如果是这样,错误可能是PyMongo 3中一个关键的新错误的症状:
https://jira.mongodb.org/browse/PYTHON-898
它将在PyMongo 3.0.1中修复,我们将在一周内发布。
答案 1 :(得分:0)
我认为我正在使用pymongo 3.0,它有一个名为no_cursor_timeout=True
的标志,实际上我使用的是2.8。