如何使用 mongo 引擎从辅助 mongo 读取

How to read from secondary mongo using mongoengine

我使用 mongoengine "connect" 方法访问 mongo 数据库。现在我在 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: Cannot connect to database default : 172.22.67.38:27017 is not a member of replica set replset

这就是我能够使用 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)