如何使用pymongo 3只使用一个套接字连接到MongoDB?

时间:2015-04-23 06:46:52

标签: python mongodb pymongo pymongo-3.x

我想在多线程中使用一个套接字连接到MongoDB。

#-*- encoding:UTF-8 -*-

import datetime
import threading
import time

import pymongo

conn = pymongo.Connection('mongodb://127.0.0.1', auto_start_request=False)

class MyThread(threading.Thread):
    def run(self):
        print conn['fvck'].damnit.count(), datetime.datetime.now(), self.getName()
        time.sleep(10)

with conn.start_request():
    for i in range(100):
        MyThread().start()

代码只有一个套接字,PyMongo的版本是2.2rc。

Citing the documentation for PyMongo 3

  

添加了connect选项。

     

删除了start_requestin_requestend_request方法   以及auto_start_request选项。

     

copy_database方法已删除,请参阅copy_database examples   替代方案。

     

删除MongoClient.disconnect()方法;它是...的同义词   close()

client  = pymongo.MongoClient("127.0.0.1", 27017, connect=False)

布尔值connect不起作用。

1 个答案:

答案 0 :(得分:2)

  

我想在多线程中使用一个套接字连接到MongoDB。

在PyMongo 3中,传递maxPoolSize = 1。所有应用程序线程都将共享一个套接字。

  

布尔连接不起作用。

该选项确定PyMongo何时与服务器建立初始连接。如果设置为True(默认值),则会尝试立即连接。如果为False,则在应用程序尝试操作时尝试连接。请注意,在PyMongo 3中,连接是在后台线程上完成的。