Почему мое удаленное соединение MongoDB требует аутентификации на каждом запросе?
Вопрос
После борьбы с разными вещами здесь и там, я наконец смог получить Бутылка Работает на Apache и запустить Mongodb Powered Site. Я привык бегать приложения Django, поэтому я буду относиться к этому немного в моем вопросе.
Эта проблема
Каждый раз, когда страница загружается через botterpy, соединение с базой данных Mongodb, расположенной на mongohq.com, должна быть повторно аутентифицирована (что, вероятно, должно быть подключено).
Что я обнаружил
Я привязал А. db.keep_alive()
Функция в верхней части каждой модели функции модели, так что перед любым запросом MongoDB запускается, он использует простой запрос. Если он не удается, он ловит операционные последствия или ошибки автореконвета, а затем вызывает db.authenticate()
функция. После того, как он повторно реагирует, у меня добавляет журнал дБ журналам для мониторинга того, как часто он должен погрузиться. В настоящее время ему необходимо погрузиться на каждой нагрузке страницы (требует выполнения запроса). Это не правильно.
Отличие от Джанго
Я использую эту же концепцию в Django, и обнаружил, что соединение DB необходимо только быть аутентифицированным после 10-15 минут без запуска запросов.
Я не понимаю, почему создание соединения Пимонго в Джангу будет отличаться от создания одного в бутылке, так как я использую тот же драйвер, функции и методы. Я тоже не использую никаких ОРМС или ничего подобного.
Версии
- Бутылка: 0,9.dev.
- Django: 1.2.1 Финал
- Пимонго: 1.8
Я ценю помощь!
Обновление: Друг смог сделать быстрый взгляд и заметил следующее, что может помочь, отвечая на мой вопрос.
Похоже, что каждый запрос запускает новый процесс Python, в отличие от Django, в котором один процесс остается в течение длительного периода времени.
Решение
Это только что закончилось, чтобы быть странным между бутылкой и монговком. Никакого реального решения не было найдено, но я не мог воссоздать его с другими рамками. Любые другие идеи ценятся.
Другие советы
Ваш Apache XXX.conf содержит что-то вроде:
WSGIDaemonProcess project user=mysite group=www-data processes=5 threads=1
WSGIProcessGroup project
Я думаю, что самое главное должно быть threads=1