Я пытаюсь подключиться к MongoDB replicaSet с помощью MongoEngine? Я хотел бы подключиться к любому доступному вторичному серверу.Как подключить репликатор mongodb с помощью mongoengine?
Я могу найти только примеры pyMongo. Любая помощь?
Я пытаюсь подключиться к MongoDB replicaSet с помощью MongoEngine? Я хотел бы подключиться к любому доступному вторичному серверу.Как подключить репликатор mongodb с помощью mongoengine?
Я могу найти только примеры pyMongo. Любая помощь?
Если вы хотите подключиться к вторичному серверу, вам необходимо указать 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
.
Это выглядит хорошо, но как я могу заставить соединение использовать вторичное устройство и не использовать основной сервер? В приведенном выше примере он будет подключаться к первому, есть изменение, это первичный сервер. – rat
@rat: Извините, пропустил часть про чтение из вторичного :). Я исправил этот пример. – Stennie
спасибо! работает! – rat