Имате проблеми с разбирането на правилния подход тук.
Имам връзка с набор от реплики на mongodb с три члена (стандартен master-slave-slave). Всичко работи добре с връзката, когато главният остава последователен.
pymongo.Connection(['host1:27017','host2:27018','host3:27019']).database_test
По някаква причина, когато основният набор от реплики се оттегли, това започва да хвърля изключение за автоматично повторно свързване, което не изчезва дори след като бъде избран нов първичен.
Сега съм наясно, че това изключение трябва да бъде уловено и обработено, най-вероятно чрез изчакване да бъдат избрани новите първични избори. Проблемът, който имам, изглежда е, че изобщо не го интересува, след като бъде избран новият първичен. Това изключение „майсторът е сменен“ продължава да се появява.
Отпечатването на връзката с __dict__
показва и трите хоста.
Опитах да предам replicaset
kwarg на връзката, но това се появява като неочакван аргумент.
Има ли причина този тип връзка да не започне просто да прави заявки срещу новата основна?
РЕДАКТИРАНЕ:
Същият проблем очевидно сега се проявява на сървъра за разполагане. Изключението за автоматично повторно свързване се хвърля, ако главният се промени изобщо и никога не изчезва дори след като бъде избран нов първичен.
Pymongo е версия 2.2, а mongodb версия 2.0.2. Промяната на начина, по който връзката е дефинирана в кода на pymongo (mongouri срещу списък с хостове), няма ефект. Единственият начин да съживите услугата е да rs.stepDown()
другите хостове, докато първоначалният главен отново стане основен.
Connection("mongodb://host1:27017,host2:27018,host3:27019")
? - person Alain BECKER   schedule 07.10.2012