我想在多线程中使用一个套接字连接到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_request
,in_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
不起作用。
答案 0 :(得分:2)
我想在多线程中使用一个套接字连接到MongoDB。
在PyMongo 3中,传递maxPoolSize = 1。所有应用程序线程都将共享一个套接字。
布尔连接不起作用。
该选项确定PyMongo何时与服务器建立初始连接。如果设置为True(默认值),则会尝试立即连接。如果为False,则在应用程序尝试操作时尝试连接。请注意,在PyMongo 3中,连接是在后台线程上完成的。