2013-12-10 64 views
1

在我的应用程序中,我试图优雅地处理由于某些原因(例如DC之间的连接中断)而导致主服务器不可用的情况。在这种情况下,应该在前端禁用写操作,并且缓存数据库应该用于某些读取操作。有没有什么办法可以检查主/主在pymongo中不可用

我试过使用rs.status()命令。它适用于mongo外壳,但当主控制器不可用时,它不起作用,因为replSetGetStatus命令不在列表中rp.secondary_ok_commands。因此我得到了异常:

AutoReconnect:没有副本集主要可用于ReadPreference PRIMARY查询。

因为我可以处理这个异常,但它是在超时后(在我的情况下是10秒)产生的。但对我来说太长了。我更喜欢立即回应,如果有时它会不正确,我也可以。

回答

1

为此,我们在PyMongo中引入了alive()方法。

+0

谢谢。这对我很有好处,尽管主控不可用时需要一秒钟的时间。 – user1441388

+0

好点。如果alive()没有尝试实际连接到主节点,那将会更好。我在PyMongo的下一个版本[提交的问题,PYTHON-615(https://jira.mongodb.org/browse/PYTHON-615),以固定活()的行为。 –

相关问题