如何使用mongoengine读取次级mongo

时间:2015-04-16 06:51:37

标签: mongodb pymongo mongoengine

我使用mongoengine" connect"访问mongo db的方法。现在我在mongodb服务器上配置了副本集。 为了进行性能优化,我想将所有读取请求路由到具有特定标记的slave / secondary mongo服务器。

这是我的连接电话

mongoengine.connect(attrs['DB_NAME'], conn,
read_preference=ReadPreference.SECONDARY_PREFERRED,
tag_sets=[{'loc': 'nm'}, {}],
replicaSet='replset',
host=attrs['HOST'], port=attrs['PORT'],
username=attrs['USERNAME'], password=attrs['PASSWORD'],
max_pool_size=attrs['MAX_POOL_SIZE'])

错误我正在执行

  

mongoengine.connection.ConnectionError:无法连接到数据库   默认值:   172.22.67.38:27017不是副本集replset的成员

1 个答案:

答案 0 :(得分:0)

这就是我能够使用pymongo 2.8和mongoengine 0.8.7连接到mongodb以获得二次读取偏好。

from pymongo.read_preferences import ReadPreference

mongoengine.connect(<db_name>, <db_alias>,
    read_preference=ReadPreference.SECONDARY_PREFERRED,
    tag_sets=[{'loc': 'nm'}, {}],
    replicaSet='replset',
    host='mongodb://<username>:<password>@172.22.67.38:27017/<db_name>', port=attrs['PORT'],
    max_pool_size=100)