Почему мое удаленное соединение MongoDB требует аутентификации для каждого запроса?

После битвы с разными вещами здесь и там я наконец смог получить BottlePY, работающий на Apache и запустивший сайт MongoDB. Я привык к запуску приложений Django, поэтому я буду относиться к этому немного в моем вопросе.

Проблема

Каждый раз, когда страница загружается через BottlePY, подключение к базе данных MongoDB, расположенное на MongoHQ.com, должно быть повторно аутентифицировано (это означает, что, вероятно, пришлось повторно подключиться).

Что я нашел

Я приложил функцию db.keep_alive() к вершине каждой функции модели, так что перед выполнением любого запроса mongodb он пытается запустить простой запрос. Если он терпит неудачу, он обнаруживает ошибки OperationFailure или AutoReconnect, а затем вызывает функцию db.authenticate(). После повторной проверки подлинности я добавлю журнал в журнал db, чтобы отслеживать, как часто он нуждается в повторной аутентификации. В настоящее время он должен повторно аутентифицироваться при каждой загрузке страницы (для чего требуется выполнение запроса). Это неправильно.

Отличие от Django

Я использую эту ту же концепцию в django и обнаружил, что соединение db нужно пройти через 10-15 минут без запуска запросов.

Я не понимаю, почему создание соединения pymongo в django будет отличаться от создания одного в бутылке, поскольку я использую один и тот же драйвер, функции и методы. Я не использую ни ORMS, ни что-либо подобное.

Версии

  • Бутылка: 0.9.dev
  • Django: 1.2.1 final
  • PyMongo: 1.8

Я ценю помощь!

Обновление. Друг смог быстро взглянуть и заметил следующее, что может помочь в ответе на мой вопрос.

Кажется, что каждый запрос запуск нового процесса Python, поскольку против Django, в котором один процесс продолжает работать в течение длительного времени период времени.

2 ответа

Это только закончилось, чтобы быть странной вещью между Бутылкой и MongoHQ. Никакого реального решения не найдено, но я не мог воссоздать его с другими фреймворками. Любые другие идеи приветствуются.


ваш apache xxx.conf содержит что-то вроде:

WSGIDaemonProcess project user=mysite group=www-data processes=5 threads=1 WSGIProcessGroup project

Я думаю, что самое важное должно быть threads=1

licensed under cc by-sa 3.0 with attribution.