1

我想在多线程中使用一个套接字连接到 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。

引用 PyMongo 3 的文档

connect选项已添加。

start_request和方法以及选项都被in_request删除。end_requestauto_start_request

copy_database方法已删除,请参阅copy_database 示例 以获取替代方法。

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

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

布尔值connect不起作用。

4

1 回答 1

2

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

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

布尔连接不起作用。

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

于 2015-04-23T14:24:06.980 回答