pymongo MongoClient end_request()不会终止游标

时间:2015-04-27 16:45:22

标签: python mongodb pymongo

我有关于pymongo连接池的问题 - MongoClient

即使在通过end_request()语句将连接返回到连接池之后,光标("结果"在以下示例中)如何检索文档仍然是可能的

mongo_connection_pool = MongoClient(host="127.0.0.1", port=27017)
db_connection = mongo_connection_pool["db_name"]
collection = db_connection["collection"]
results = collection.find()
db_connection.end_request()

for result in results:
    print result

有什么东西我不见了吗?

欢呼

1 个答案:

答案 0 :(得分:4)

在PyMongo中2.x MongoClient.start_request用于将套接字从连接池固定到应用程序线程。 MongoClient.end_request删除该映射(如果存在)。

这对迭代游标没有影响。对于每个OP_GET_MORE操作,驱动程序必须执行它才能从池中获取套接字。如果您在"请求"它将使用当前线程的请求套接字。如果没有,它将使用任何可用的套接字。 You can read more about requests here。请注意"请求" no longer exist in PyMongo 3.0

如果你想"终止"游标可以指定游标对象,或者调用cursor.close()