【问题标题】:How to use just one socket to connect to the MongoDB with pymongo 3?pymongo 3如何使用一个socket连接MongoDB?
【发布时间】:2015-07-01 04:22:29
【问题描述】:

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

代码只有一个socket,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 不起作用。

【问题讨论】:

    标签: python mongodb pymongo pymongo-3.x


    【解决方案1】:

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

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

    布尔连接不起作用。

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

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 2017-07-31
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 2020-07-12
      • 1970-01-01
      相关资源
      最近更新 更多