KeyError:连接到Mongodb副本集时,'从空集弹出'(motor,pymongo,Tornado)

时间:2012-10-24 21:06:47

标签: python mongodb replication tornado tornado-motor

我正在以下列方式连接到运行mongoDB的3节点副本集:

DB = motor.MotorReplicaSetConnection("mongodb://user:pass@ip_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

有关吗?

1 个答案:

答案 0 :(得分:2)

L-R和我一直在私下调试,我认为这个奇怪的错误信息是这个Tornado bug的结果:

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

...我已经解决了对Motor的这个提交:

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

根据你的测试,听起来像MotorReplicaSetConnection 可以实际上在它成为主要后不久重新连接到新的主要部分,如果不是这样,请再次给我发电子邮件。