Pregunta

Después de luchar con cosas diferentes aquí y allá, que finalmente fue capaz de conseguir BottlePY se ejecuta en Apache y correr MongoDB un sitio en polvo. Estoy acostumbrado a la ejecución de aplicaciones de Django, así que voy a estar relacionados con ese un poco en mi pregunta.

El problema

Cada vez que una página se carga a través BottlePY, la conexión a la base de datos MongoDB situado en MongoHQ.com necesita ser re-autenticado (lo que significa que probablemente tuvo que volver a conectar).

lo que encontré

Me une una función db.keep_alive() a la parte superior de cada función del modelo, por lo que antes de ejecutar cualquier consulta mongodb, trys para ejecutar una consulta simple. Si falla, se llama la OperationFailure o errores autoReconnect y luego llama a la función db.authenticate(). Después se vuelve a autenticar, tengo que añadir un registro a una db registros para controlar la frecuencia con que debe volver a autenticar. Actualmente, es necesario volver a autenticarse en cada carga de página (que requiere ejecutar una consulta). Esto no es correcto.

Diferencia de Django

Yo uso este mismo concepto en Django, y han encontrado que la conexión db sólo necesita ser autenticado después de 10-15 minutos de consultas no se está ejecutando.

No entiendo por qué la creación de una conexión pymongo en Django sería diferente de la creación de uno de cada botella, ya que yo estoy usando el mismo controlador, funciones y métodos. No estoy usando cualquier ORMS ni nada de eso tampoco.

Versiones

  • Botella: 0.9.dev
  • Django: 1.2.1 final
  • PyMongo: 1.8

Agradezco la ayuda!

Actualización: Un amigo fue capaz de echar un vistazo rápido y se dio cuenta de que la siguiente ayuda de mayo con la respuesta a mi pregunta.

  

Parece que cada solicitud es   el lanzamiento de un nuevo proceso de Python, como   oposición a Django, en el que un único   restos proceso que se ejecuta durante mucho   período de tiempo.

¿Fue útil?

Solución

Esto sólo terminó siendo una cosa extraña entre la botella y MongoHQ. No se ha encontrado solución real, pero no podía volver a crearlo con otros marcos. Cualquier otra idea se aprecian.

Otros consejos

¿su apache xxx.conf contiene algo como:

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

Creo que más importante debe ser threads=1

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top