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 ノードに再接続できないようです。理由はわかりません。host:port を接続文字列に追加/置換しても、結果は得られません。これはと関係がありread_preferenceますか?

4

1 に答える 1

2

LR と私はこれを非公開でデバッグしてきましたが、この奇妙なエラー メッセージは、このトルネード バグの結果だと思います。

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

... Motorへのこのコミットで回避しました:

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

あなたのテストに基づいて、MotorReplicaSetConnection、実際には新しいプライマリがプライマリになった直後に再接続できるようです。そうでない場合は、もう一度メールしてください。

于 2012-12-07T22:37:10.690 に答える