Python 到mongodb复制集的连接太多?

Python 到mongodb复制集的连接太多?,python,mongodb,pymongo,Python,Mongodb,Pymongo,我正在编写一个Python应用程序,在pymongo的后端与Mongodb一起工作 我已经创建了一个模型类来镜像数据库中插入的文档 这是一个正在运行的模型的快速示例: if __name__ == '__main__': class MyApp(App): db_client = MongoClient(replicaset='erpRS').test def build(self): model = models.UserM

我正在编写一个Python应用程序,在pymongo的后端与Mongodb一起工作

我已经创建了一个模型类来镜像数据库中插入的文档 这是一个正在运行的模型的快速示例:

if __name__ == '__main__':

    class MyApp(App):

        db_client = MongoClient(replicaset='erpRS').test

        def build(self):
            model = models.UserModel(name='NewUser', cpf='01234567890')
            print(model)
            model.save()
            model_from_db = models.UserModel.objects.find_one()
            print(model_from_db)

        def on_stop(self):
            self.db_client.close()
我的模型类(ex:UserModel)创建一个集合实例作为用于CRUD操作的类属性。在上面的代码片段中,我创建了一个用户并将其保存到数据库中。然后,我从数据库中获取以前保存的用户。当应用程序停止时,将调用_stop()上的
,pymongo客户端将关闭,其连接将关闭

此代码按预期工作

但是在监控数据库时,我可以看到上面的截图,只有一个模型实例,一个集合实例,两个CRUD操作调用,打开了多达6个到数据库的连接

在进一步的检查中,mongodb自身似乎保持了一些连接打开。运行此程序一次后,我的3节点ReplicaSet(都在同一台机器上运行)打开了19个连接


这是合理的行为吗?应该有这么多打开的连接吗?

MongoDB有连接池。你不应该太担心打开19个连接。一次连接的成本是节点上的1mb文件

您应该考虑的是重构代码并使用DI传递MongoClient对象


每次实例化一个类时创建一个新的MongoClient和一个连接太昂贵了。

只有一个MongoClient和Collection对象(数据库上的每个集合)被实例化,这就是为什么我认为这么多连接很奇怪的原因。我意识到这远远低于连接限制,但对于我描述的案例来说,这似乎是一个很大的数字