2013-12-18 3 views

ответ

9

Если вы хотите подключиться к вторичному серверу, вам необходимо указать specify a read preference, например SECONDARY или SECONDARY_PREFERRED. Обратите внимание, что при чтении данных из вторичного устройства вы должны ожидать, что данные в конечном итоге будут согласованы и могут быть устаревшими (т. Е. Изменения, возможно, не были реплицированы из основного).

Вам необходимо будет импортировать ReadPreference с базового pymongo драйвера для списка констант. Вы можете указать значение по умолчанию read_preference на уровне соединения или в запросе.

Пример использования вторичного предпочтительным (будет читать из первичной, если вторичная не доступен):

from mongoengine import connect 
from pymongo import ReadPreference 
connect('mydb', host='mongodb://server1:27017,server2:27017,server3:27017', replicaSet='replset', read_preference=ReadPreference.SECONDARY_PREFERRED) 

Вы можете проверить, если читает собираются с помощью вторичных mongostat --discover.

+0

Это выглядит хорошо, но как я могу заставить соединение использовать вторичное устройство и не использовать основной сервер? В приведенном выше примере он будет подключаться к первому, есть изменение, это первичный сервер. – rat

+0

@rat: Извините, пропустил часть про чтение из вторичного :). Я исправил этот пример. – Stennie

+0

спасибо! работает! – rat

Смежные вопросы