У меня есть веб-сайт Django (с mongoengine), который работает в режиме только для чтения, и автономное приложение Python, которое заполняет эту MongoDB (читается Django). Столкнувшись с некоторыми проблемами с блокировками, я обнаружил, что набор реплик будет улучшением, поскольку я могу сделать вторичный экземпляр БД веб-сайта.
Сначала я просто изменил свое подключение к хосту вторичного экземпляра и получил ошибку:
Request Method: GET
Request URL: http://localhost:8000/awesomeApp/
Django Version: 1.5
Exception Type: AutoReconnect
Exception Value:
not master
После этого я безуспешно пытался решить эту проблему с зарегистрированным соединением, а затем обновился до mongoengine 0.8.7, который мог подключаться к:
connect('awesomeApp', host='mongodb://rs63804-a0.mongoserviceprovider.com:27017,rs63804-a1.mongoserviceprovider.com:27017', replicaSet='rs63804', read_preference=ReadPreference.SECONDARY_PREFERRED, username='scott', password='tiger')
Но теперь я получаю два разных сообщения об ошибках, когда использую ReadPreference.PRIMARY_PREFERRED или ReadPreference.SECONDARY_PREFERRED...
С PRIMARY_PREFERRED он возвращает:
Request Method: GET
Request URL: http://localhost:8000/awesomeapp/
Django Version: 1.5
Exception Type: OperationFailure
Exception Value:
not authorized to create index on awesomeapp.django_session
И с SECONDARY_PREFERRED:
Request Method: GET
Request URL: http://localhost:8000/awesomeapp/
Django Version: 1.5
Exception Type: OperationFailure
Exception Value:
database error: not authorized for query on awesomeapp.django_session
Я застрял на этом шаге, ищу способ разрешить эту операцию через конфигурации mongoengine и/или mongodb, но пока не нашел решения. Любые идеи?
заранее спасибо