Я использую базу данных MongoDB, размещенную через mLab, подключающуюся через mongoengine, в приложение Elastic Beanstalk (Flask).
Я подключаюсь так:
mongoengine.connect(db='my-database', host ='mongodb:/user:[email protected]')
Однако в первый раз, когда Elastic Beanstalk автоматически очистил мое приложение, я начал получать следующее сообщение об ошибке:
OperationFailure: Another user is already authenticated to this database.
You must logout first.
Я думаю, что это происходит, потому что один и тот же пользователь пытается аутентифицироваться в одной и той же базе данных несколько раз, когда приложение автоматически масштабируется? Если это так, каково это решение? Есть ли другой способ подключения к базе данных?
Я понятия не имею, почему это так, но я обнаружил, что понижение от pymongo==3.7.0
до pymongo==3.6.1
под капотом mongoengine
разрешило проблему для меня
Это исключение означает, что вы пытаетесь аутентифицировать двух отдельных пользователей в одной базе данных. Водитель запрещает это, чтобы избежать эскалации привилегий. Вы можете выйти из первого пользователя, вызвав Database.logout(). Затем вы сможете успешно аутентифицировать второго пользователя.
https://api.mongodb.org/python/current/api/pymongo/database.html#pymongo.database.Database.logout