MongoEngine указывает предпочтение чтения по запросу

Я использую Mongo 2.6, Pymongo 2.7.2 и Mongoengine 0.8.7. Для определенного запроса на чтение я хочу использовать вторичный набор реплик. Следовательно, как указано в документации mongoengine здесь Я написал свой запрос следующим образом:

from pymongo.read_preferences import ReadPreference    
<collection_name>.objects().read_preference(ReadPreference.SECONDARY_PREFERRED)

Однако кажется, что запрос всегда идет к основному (журналы для этого запроса всегда видны только в основном). Синтаксис правильный? Если да, как проверить, запрашивается ли вторичный?


person Yahya    schedule 12.05.2016    source источник
comment
Это может быть связано с этой ошибкой, если вы связываете другой метод, такой как skip, limit , так далее.   -  person Jérôme    schedule 12.05.2016
comment
Я связываю его с методом order_by, но моя версия Pymongo — 2.7.2, а ошибка есть в любой версии ›= 3.0. Я думаю, что это сломано и в 2.7.2.   -  person Yahya    schedule 13.05.2016
comment
Сообщение гласит: «На данный момент исправление работает только для pymongo версии ‹ 3.0., поэтому я подумал, что это касается и 2.7, и 3+ (хотя и по-разному). Вы можете попробовать без order_by, чтобы перепроверить.   -  person Jérôme    schedule 13.05.2016


Ответы (1)


Разобрался в чем дело. В методе MongoEngine connect параметр replicaSet должен быть указан следующим образом:

connect(db = "my_db", replicaSet = "my_replica_set_name", host = "hostname", port = "port_number")

Синтаксис предпочтения чтения правильный, как указано выше. Передача параметра replicaSet заставила его работать.

person Yahya    schedule 01.07.2016