Python 在MongoDB中处理主从/主从查询

Python 在MongoDB中处理主从/主从查询,python,mongodb,pymongo,Python,Mongodb,Pymongo,我想用MongoDB扩展读取。为此,我可以设置主从复制或副本集,但如果我像这样创建到Mongo的连接: from pymongo import ReplicaSetConnection, ReadPreference from pymongo.errors import ConnectionFailure try: connection = ReplicaSetConnection("somehost:10000", replicaSet='myapp_repl',

我想用MongoDB扩展读取。为此,我可以设置主从复制或副本集,但如果我像这样创建到Mongo的连接:

from pymongo import ReplicaSetConnection, ReadPreference
from pymongo.errors import ConnectionFailure

try:
    connection = ReplicaSetConnection("somehost:10000", replicaSet='myapp_repl',
                                  read_preference=ReadPreference.SECONDARY) 
except ConnectionFailure ...
或:


pymongo驱动程序将在副本集的二级/从副本之间分发查询。在这种情况下,primary/master将不处理查询,因此如果我有2个节点,我将不会增强读取功能,因为只有1个节点将处理查询。如何让主设备和从设备(主设备和辅助设备)处理查询?

这有点麻烦,但:

connection = MasterSlaveConnection(master, slaves=[slave1, slave2, master)
但不推荐使用MasterSlaveConnection

我不确定是否有其他方法可以解决这个问题


您可能希望研究切分或添加仲裁者以在新的初选中投票:

不知道这是否可行,但如果尝试会发生什么:
connection=MasterSlaveConnection(master,slaves=[slave1,slave2,master)
?嗯,它确实有效!副本集有什么解决方案吗?ReadPreference已经是次要的,但此选项不会强制pymongo在主副本和辅助副本之间平衡查询(仅在辅助副本之间,如果存在的话).因此,在#mongodb中询问之后,我无法找到解决此问题的方法:/,我可以告诉您,如果辅助节点关闭,它将返回到主节点。上面的讨论是正确的;在不久的将来,我们可能会将ReadPreference.ANY添加到PyMongo中,以允许在副本集的所有成员之间进行分发。
connection = MasterSlaveConnection(master, slaves=[slave1, slave2, master)