我采用了pymongo的MongoClient类连接到一个复制集,它有三个节点,1个主要2个辅助节点.代码段如下:
c = MongoClient([secondary1_hostname, secondary2_hostname], replicaSet='rs0')
Run Code Online (Sandbox Code Playgroud)
当检查三个mongod的日志时,我发现始终与主要主机建立了连接,但是其他2个从未接收到来自客户端的连接请求或者连接立即断开连接.似乎客户端首先到达一个二级获得主要地址然后删除连接并创建与主要的长期连接.
但是,当我使用MongoReplicaSetClient类时,使用以下代码:sinppet:
c = MongoReplicaSetClient(secondary1_name, replicaSet='rs0')
Run Code Online (Sandbox Code Playgroud)
每个副本集成员始终创建3个连接,从mongod的日志文件中获取.
那么,为什么MongoClient的行为总是只创建与主要的连接?我阅读了PyMongo的手册,但没有找到答案.任何建议表示赞赏.