1

我正在以下列方式连接到运行 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 节点,我不知道为什么。即使我添加/替换主机:端口到连接字符串,我仍然没有得到任何结果。这有关系read_preference吗?

4

1 回答 1

2

LR 和我一直在私下调试这个,我认为奇怪的错误消息是这个 Tornado 错误的结果:

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

...我已经解决了这个对 Motor 的承诺:

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

根据您的测试,听起来 MotorReplicaSetConnection实际上可以在新的主节点成为主节点后不久重新连接到它,如果不是这种情况,请再次给我发电子邮件。

于 2012-12-07T22:37:10.690 回答