python - Connecting to a MongoDB replica set - pymongo -


so have cluster of 3 mongo replica sets. primary (master) @ rs1, while rs2 , rs3 secondaries. however, primary may change, example, rs2 may primary @ given time due configuration issue. therefore, need able connect appropriate replica set. let's @ rs1=10.1.1.1, rs2=10.1.1.2 , rs3=10.1.1.3. here's how i'm connecting mongo:

mongoserver_uri = "mongodb://{0}:{1}@{2}:{3}/admin".format(                     username, password, host, port) self.log.info("------- mongo server uri: %s --------" % mongoserver_uri) self.client = pymongo.mongoclient(host=mongoserver_uri, ssl=true,                                   ssl_cert_reqs=ssl.cert_none) 

however if, explained, replica set primary changes let's rs3 unable connect mongo:

  file "/home/ubuntu/myproject/mongodb.py", line 165, in clear_collections     collection.remove()   file "/usr/local/lib/python2.7/site-packages/pymongo/collection.py", line 2258, in remove     return self._delete(sock_info, spec_or_id, multi, write_concern)   file "/usr/local/lib/python2.7/site-packages/pymongo/collection.py", line 916, in _delete     codec_options=self.codec_options)   file "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 218, in command     self._raise_connection_failure(error)   file "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 346, in _raise_connection_failure     raise error pymongo.errors.notmastererror: not master 

how can specify other replica sets mongoclient?

from docs

a connection replica set can made using mongoclient() constructor, specifying 1 or more members of set, along replica set name.

mongoserver_uri = "mongodb://{0}:{1}@{2}:{3}/admin".format(                     username, password, host, port) self.log.info("------- mongo server uri: %s --------" % mongoserver_uri) self.client = pymongo.mongoclient(host=mongoserver_uri, ssl=true,                                   ssl_cert_reqs=ssl.cert_none,                                   replicaset='name_of_set') 

as long server connect online @ initially, mongoclient find members of replicaset , automatically attempt find new primary on failover.