MongoEngine - 另一个用户已通过此数据库的身份验证。您必须先退出

Tha*_*yen 6 python mongodb mongoengine flask

任何人都可以解释为什么我收到错误另一个用户已经通过了该数据库的身份验证。使用Flask MongoEngine连接到 MongoDB 时必须先注销吗?

from mongoengine.connection import get_db
from flask import Flask, jsonify, abort
from flask_cors import CORS
from flask_mongoengine import MongoEngine
from flask_restful import Api

def init_db():
    return MongoEngine()

app = Flask(__name__)
CORS(app)
api = Api(app)
app.config.from_object('conf.settings')
db = init_db()
db.init_app(app)

@app.route('/health_check')
def on_health_check():
    try:
        db = get_db()
        db.command('dbstats')

        return jsonify(
            status=200
        )
    except Exception as e:
        logging.exception('on_health_check() exception -> {}'.format(str(e)))
        abort(500, 'Could not connect to database')


app.run(host='0.0.0.0', port=5000, debug=True, threaded=True)
Run Code Online (Sandbox Code Playgroud)

conf/settings.py:

MONGODB_SETTINGS = {
    'host': 'mongodb://username:password@mongo-rep-mongodb-replicaset-0.local:27017,mongo-rep-mongodb-replicaset-1.local:27017/db_name?replicaSet=whatever'
}
Run Code Online (Sandbox Code Playgroud)

当我转到 时http://localhost:5000/health_check,它总是Exception像我上面描述的那样抛出with 消息。

小智 3

所以我今天遇到了同样的问题,但最终通过安装以前版本的 pymongo 来解决它,例如 pip install pymongo==3.4.0 而不是最新版本 3.7.0。可能有一个错误...

  • 你救了我的命!我改成`pymongo==3.6.1`也可以了。 (3认同)