Как закрыть курсор в MongoKit

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

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

OperationFailure: cursor id '369397057360964334' not valid at server

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

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

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


person cleg    schedule 22.03.2011    source источник


Ответы (1)


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

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

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

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

Просто сделайте это, когда закончите:

del cursor
person MC78    schedule 22.03.2011