pymongo副本设置客户端连接是否支持自动故障转移?

And*_*ong 5 mongodb pymongo

我使用mongo cli创建了以下mongo副本集:

> config = { _id:"repset", members:[{_id:0,host:"192.168.0.1:27017"},{_id:1,host:"192.168.0.2:27017"},{_id:2,host:"192.168.0.3:27017"}]}

> rs.initiate(config);
Run Code Online (Sandbox Code Playgroud)

所有mongo服务器都正常运行.

>>> import pymongo
>>> from pymongo import MongoClient
>>> servers = ["192.168.0.1:27017", "192.168.0.2:27017", "192.168.0.3:27017"]
>>> MongoClient(servers)
>>> xc = MongoClient()
>>> print xc
MongoClient('localhost', 27017)
>>> print xc.database_names()
[u'test_repsets', u'local', u'admin', u'test']
Run Code Online (Sandbox Code Playgroud)

在我杀死本地mongodb服务器后,它显示我的连接超时错误:

pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused
Run Code Online (Sandbox Code Playgroud)

虽然我定义了mongodb服务器,但似乎没有自动故障转移.我想知道pymongo是否自动进行故障转移,或者如何正确处理这种情况?

先感谢您.

Thr*_*ion 0

在 Pymongo 3.x 中,您可能需要明确说明您要连接到的副本集。我知道 Pymongo 3.x 改变了一些处理服务器数组的方式。我从Pymongo API中得到了关于副本连接和自动故障转移的信息