stworzyłem następujące zestawy replik Mongo Mongo za pomocą CLI:Czy replika pymongo ustawia automatyczną awarię obsługi połączenia klienta?
> 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);
Wszystkie serwery Mongo działać prawidłowo.
>>> 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']
Po zabiję lokalnego serwera MongoDB, to pokazuje mi błąd połączenia timeout:
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused
wydaje nie ma automatycznego przełączania awaryjnego, chociaż zdefiniowane serwery MongoDB. Zastanawiam się, czy uchwyty pymongo ulegają awarii automatycznie lub jak ta sytuacja jest obsługiwana poprawnie?
Z góry dziękuję.
Jaka wersja pymongo używasz? – ThrowsException
pymongo == 3.0.3 Myślę, że popełniłem błąd: xc = MongoClient() powinien być xc = MongoClient (serwery). Wtedy działa dobrze. –