2015-04-23 78 views
1

我想在多线程中使用一个套接字连接到MongoDB。如何用pymongo 3只用一个套接字连接到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_request,和end_request方法被去除,如 还有auto_start_request选项。

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

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

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

布尔connect不起作用。

回答

2

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

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

布尔连接不起作用。

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

相关问题