最近我一直在尝试将 Mongoengine 和 Flask 与副本集一起使用。我可以连接,但是当主节点发生变化时,连接会丢失并且出现中断。
这是一个片段,您可以在其中测试行为。它使用非常有用的http://flip-flop.mlab.com/站点来调试副本集问题
from flask import Flask
from mongoengine import connect
from flask_mongoengine import MongoEngine
import os
db = MongoEngine()
app = Flask(__name__)
class TestDoc(db.Document):
texto = db.StringField()
class ProductionConfig:
def get_conn_data(self):
conn = {
'host':"mongodb://testdbuser:testdbpass@flip.mongolab.com:53117,flop.mongolab.com:54117/testdb?replicaSet=rs-flip-flop",
'replicaSet': 'rs-flip-flop'
}
return conn
import time
app.config['MONGODB_SETTINGS'] = ProductionConfig().get_conn_data()
db.init_app(app)
if __name__ == '__main__':
with app.test_client() as c:
while True:
time.sleep(1)
print(TestDoc.objects().count())
TestDoc(texto="1").save()
每次主要更改错误时,我都会得到:pymongo.errors.AutoReconnect: connection closed
.
非常感谢!我尝试了几个不同的 pyMongo 版本,但没有成功。任何帮助都将非常非常感谢!