2011-03-22 3 views
6

Я использую MongoKit для выполнения итераций на огромном количестве данных.Как закрыть курсор в MongoKit

В ходе этого процесса мой курсор становится недействительным, и я получаю

OperationFailure: cursor id '369397057360964334' not valid at server

Я прочитал в списках рассылки, которые я могу передать параметр timeout=False к .find() методе, но PyMongo FAQ говорит, что я ВАВЭ к позаботьтесь о закрытии курсора.

Но я не нашел для этого методов в MongoKit.

Нужно ли закрывать курсор вручную, и если да - как я могу это сделать?

ответ

9

Вам нужно будет закрыть курсор, так как сервер MongoDB не будет вычеркивать курсор для вас, учитывая, что вы специально его не задавали.

просто наберите del на вашем курсоре. По умолчанию реализация pymongo для __del__ уведомит сервер, чтобы убить курсор.

Предполагая, что-то вроде:

cursor = db.test.find(timeout=False) 

Просто сделать это, когда вы сделали:

del cursor 
Смежные вопросы