2015-04-23 88 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連接在後臺線程上完成。