Un peu de mal à comprendre la bonne approche ici.
J'ai une connexion à un mongodb jeu de réplicas avec trois membres (standard maître-esclave-esclave). Tout fonctionne bien avec la connexion lorsque le maître reste cohérente.
pymongo.Connection(['host1:27017','host2:27018','host3:27019']).database_test
Pour quelque raison, quand le jeu de réplicas primaire marches plus bas, cela commence à jeter un autoreconnect exception qui ne disparaît pas, même après une nouvelle primaire est élu.
Maintenant, je suis conscient que cette exception doit être capturées et traitées, probablement en attente pour le nouveau primaire pour être élu. Le problème que j'ai semble être qu'il ne se soucie pas du tout une fois le nouveau principal a été choisi. Ce "maître a changé" exception ne cesse de venir.
L'impression de la connexion avec __dict__
montre tous les trois armées.
J'ai essayé en passant l' replicaset
kwarg à la connexion, mais cela vient comme un argument inattendu.
Est-il une raison pour laquelle ce type de connexion ne serait pas juste de commencer à interroger les nouveaux primaire?
EDIT:
Ce même problème est apparemment maintenant manifestent sur le serveur de déploiement. Le autoreconnect exception est levée si le maître des changements à tous et ne va jamais loin, même après une nouvelle primaire est élu.
Pymongo est la version 2.2 et mongodb la version 2.0.2. La modification de la manière dont la connexion est définie dans le pymongo code (mongouri vs liste des hôtes) n'a aucun effet. La seule façon de relancer le service est-à - rs.stepDown()
les autres hôtes jusqu'à ce que le master original est primaire une fois de plus.