在我的应用程序中,当主机由于某种原因不可用时(例如 DC 之间的连接断开),我试图优雅地处理情况。在这种情况下,应该在前端禁用写入操作,并且应该将缓存数据库用于某些读取操作。
我曾尝试使用rs.status()
命令。它在mongo
shell 中工作,但pymongo
在 master 不可用时不起作用,因为replSetGetStatus
command 不在 list 中rp.secondary_ok_commands
。结果我遇到了异常:
AutoReconnect:没有可用于使用 ReadPreference PRIMARY 查询的副本集主。
当然我可以处理这个异常,但它是在超时后生成的(在我的例子中是 10 秒)。但就我而言,它太长了。我更喜欢立即响应,如果有时它会不正确,这对我来说是可以的。