2012-10-24 2 views
1

Я подключение к реплике 3-узла, установленной MongoDB работает следующим образом:KeyError: «поп из пустого набора» при подключении к набору реплик MongoDB (двигатель, PyMongo, Торнадо)

DB = motor.MotorReplicaSetConnection("mongodb://user:[email protected]_address:27017", replicaSet='repl_set_name').open_sync().collection_name 

Мой набор реплик прекрасно работает, когда PRIMARY спускается, другой берет верх. Но когда я это делаю, мой сервер Tornado выдает ошибку KeyError: 'pop from an empty set' при повторном подключении. Похоже, что Tornado/Motor не может подключиться к новому узлу PRIMARY, я не уверен, почему. Даже если я добавлю/заменим host: port в строку подключения, я до сих пор не получаю никаких результатов. Это связано с read_preference?

ответ

2

LR и я отладка это в частном порядке, я думаю, что сообщение странной ошибки является следствием этой ошибки Торнадо:

https://github.com/facebook/tornado/issues/651

... который я работал вокруг с этим совершить двигатель :

https://github.com/ajdavis/mongo-python-driver/commit/c7c1614bbf27c3a02ac8c582a8815dee59c39280

Основываясь на ваши теста это звучит как MotorReplicaSetConnection может фактически повторное подключение к новому чопорному ary вскоре после того, как он станет основным, пожалуйста, напишите мне снова, если это не так.