Question

In my app I am trying to graceful handling case when the master is not available for some reason (for example the connection between DC is broken). In this case write operations should be disabled on the frontend and the cache database should be used for some read operations.

I have tried to use rs.status() command. It works from mongo shell, but it doesn't work from pymongo when the master is not available because replSetGetStatus command is not in list rp.secondary_ok_commands. As result I have got exception:

AutoReconnect: No replica set primary available for query with ReadPreference PRIMARY.

Of cause I can handle this exception, but it is generated after timeout (in my case 10 seconds). But it is too long in my case. I prefer immediate response, and it is ok for me if sometimes it will be incorrect.

Was it helpful?

Solution

We introduced the alive() method in PyMongo for this purpose.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top