2011-03-22 18 views
6

Używam MongoKit do wykonywania iteracji na ogromnej ilości danych.Jak zamknąć kursor w MongoKit

Podczas tego procesu mój kursor staje się nieważny, a ja dostaję

OperationFailure: cursor id '369397057360964334' not valid at server

Czytałem na listach dyskusyjnych, które mogę przekazać parametr timeout=False do .find() metody, ale PyMongo FAQ mówi, że vave do sam zajmij się zamykaniem kursora.

Ale nie znalazłem metod w MongoKit.

Czy muszę zamykać kursor ręcznie, a jeśli tak, w jaki sposób mogę to zrobić?

Odpowiedz

9

Konieczne będzie zamknięcie kursora, ponieważ serwer MongoDB nie ustawi dla Ciebie kursora, ponieważ prosiłeś o nie.

po prostu zadzwoń pod numer del na kursor. Domyślna implementacja pymongo dla __del__ powiadomi serwer o zabiciu kursora.

Zakładając coś takiego:

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

Wystarczy to zrobić, kiedy skończysz:

del cursor