Почему мое удаленное соединение с MongoDB требует аутентификации при каждом запросе? - PullRequest
6 голосов
/ 11 августа 2010

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

Проблема

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

Что я нашел

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

Отличия от Джанго

Я использую эту же концепцию в django и обнаружил, что соединение с БД необходимо аутентифицировать только после 10-15 минут без выполнения запросов.

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

Версия

  • Бутылка: 0.9.dev
  • Джанго: 1.2.1 финал
  • PyMongo: 1,8

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

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

Похоже, что каждый запрос запуск нового процесса Python, как в отличие от Джанго, в котором один процесс продолжается долго период времени.

Ответы [ 2 ]

1 голос
/ 31 августа 2010

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

0 голосов
/ 16 августа 2010

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

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

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

...