设置:
我有一个mongodb主实例和两个辅助实例。两个辅助实例中的一个与我的web应用托管在同一区域。
我正在使用pymongo进行连接。
查询:
如何连接到延迟更低的辅助服务器?
目前我正在做这件事:
from pymongo import ReplicaSetConnection
from pymongo import ReadPreference
db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.SECONDARY我能连接到任何一个次要的。如何从延时较低的实例强制获取连接
谢谢!!
发布于 2012-12-04 18:36:21
这个答案是针对我的情况的,因为我最近的辅助服务器和我的web服务器在同一个区域(就像在同一台机器上运行一样好),所以数据传输会非常快,而且我不需要为带宽使用付费(考虑到数据量,带宽使用量在一个月内可能会变得非常重要)。
否则,'secondary_acceptable_latency_ms‘的默认值= 15ms。所以这并不重要。
因此,如果有人发现他/她自己也处于同样的情况,下面是要做的:
from pymongo import ReplicaSetConnection
from pymongo import ReadPreference
db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.SECONDARY
db.secondary_acceptable_latency_ms = 0.001谢谢!!
发布于 2012-11-23 22:38:48
阅读首选项如下所示:
因此,对于最近的次要节点,没有特定于的。您可以通过组合NEAREST和tag_sets并标记辅助节点来实现这一点。
然后,如果从属服务器已标记为{'secondaries': 1},则可以从最近的从属服务器读取数据,如下所示:
from pymongo import ReplicaSetConnection
from pymongo import ReadPreference
db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.NEAREST
db.tag_sets = [{'secondaries': 1}]更新:
您应该注意到,如果发生了选举并且您的副本集的拓扑发生了变化,那么您必须手动更改tag_sets来表示新的辅助节点。
https://stackoverflow.com/questions/13529174
复制相似问题