Проблемы с пониманием правильного подхода.
У меня есть соединение с набором реплик mongodb с тремя участниками (стандартный главный-подчиненный-подчиненный). Все работает нормально с подключением, когда мастер остается постоянным.
pymongo.Connection(['host1:27017','host2:27018','host3:27019']).database_test
По какой-то причине, когда реплика устанавливает первичные шаги вниз, это начинает выдавать исключение автоматического повторного подключения, которое не исчезает даже после выбора нового первичного сервера.
Теперь я понимаю, что это исключение нужно перехватывать и обрабатывать, скорее всего, ожидая выбора нового основного сервера.Проблема, с которой я столкнулся, по-видимому, заключается в том, что ему вообще все равно, когда выбран новый первичный элемент. Это исключение «мастер изменился» продолжает появляться.
Печать соединения с __ dict __
показывает все три хоста.
Я попытался передать набор реплик
kwarg в соединение, но это оказалось неожиданным аргументом.
Есть ли причина, по которой такое соединение не запускает запросы к новому первичному серверу?
РЕДАКТИРОВАТЬ:
Эта же проблема, по-видимому, теперь проявляется на сервере развертывания. Исключение autoreconnect генерируется, если мастер вообще изменяется, и никогда не исчезает даже после выбора нового основного.
Pymongo - это версия 2.2 и mongodb версии 2.0.2. Изменение способа определения соединения в коде pymongo (монгури или список хостов) не имеет никакого эффекта. Единственный способ оживить службу - это rs.stepDown ()
другие хосты, пока исходный мастер снова не станет основным.