【问题标题】:KeyError: 'pop from an empty set' when connecting to a Mongodb replica set (motor, pymongo, Tornado)KeyError:连接到 Mongodb 副本集(电机、pymongo、龙卷风)时“从空集中弹出”
【发布时间】:2012-10-24 21:06:46
【问题描述】:

我正在通过以下方式连接到运行 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 有关吗?

【问题讨论】:

    标签: python mongodb replication tornado tornado-motor


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 2012-12-04
      • 1970-01-01
      • 2013-05-25
      相关资源
      最近更新 更多