Related to this post: https://www.mongodb.com/community/forums/t/i-am-using-pymongo-do-i-have-to-close-a-mongoclient-after-use/213511
We should document that the best practice is to call close() when the client is no longer needed or use the client in a with-statement:
with MongoClient(url) as client: # use client here
Also document that the best practice is to call close() on the cursor too, the best way would be to use a with-statement like this:
with collection.find() as cursor: for s in cursor: print(s)
When PyMongo's MongoClient and cursor objects are garbage collected without being closed pymongo will clean up application-side resources automatically (connections, threads, etc...) however some server-side resources could be left open (cursors, sessions). Calling close() explicitly (or using a with-statement) will clean up these server-side resources that would otherwise be left around until they timeout.
- has to be done before
-
PYTHON-3193 Add ResourceWarning for unclosed MongoClients in __del__
- Closed