2009-12-22 19 views
5

Así que estoy tratando de hacer más desarrollo web en python, y he elegido cherrypy, alojado por lighttpd w/fastcgi. Pero mi pregunta es muy básica: ¿por qué tengo que reiniciar lighttpd (o apache) cada vez que cambio el código de mi aplicación o el código de una biblioteca subyacente?fastcgi, cherrypy y python

Me doy cuenta de que esta pregunta se extiende desde una comprensión básica errónea (es decir, pobre) del modelo fastcgi, así que estoy abierto a cualquier educación aquí, pero estoy acostumbrado a simplemente cambiar un archivo PHP y mostrarlo, versus tener que rebotar el servidor web.

Cualquier elucidación/burla útil apreciada.

+1

"bounce"? ¿Eso significa "reiniciar" o algo así? Por lo general, en las computadoras "rebote" se refiere a un intento de recuperar algo que se rechaza como un error, o conceptos similares. –

+0

Sí, rebote, como para reiniciar el proceso. Por lo general, en mi experiencia la gente siempre habla de rebotar en Apache, Tomcat, etc. etc. – Wells

+0

Relacionados: http://stackoverflow.com/questions/1711483/python-web-hosting-why-are-server-restarts-necessary – miku

Respuesta

8

Esto se debe al rendimiento. Para el desarrollo, la autorrecarga es útil. Pero para la producción, usted no desea desea cargar automáticamente. Esto es realmente un cuello de botella de un tamaño decente en decir PHP. Cada vez que accede a una página web de PHP, el servidor tiene que analizar y cargar cada página desde cero. Con Python, el script ya está cargado y ejecutándose después del primer acceso.

Como se ha señalado, CherryPy tiene una configuración de autorrecarga. Recomiendo usar el servidor incorporado CherryPy para el desarrollo y usar lighttpd para la producción. Eso probablemente le ahorrará tiempo. El tutorial le muestra cómo hacer esto.

+0

Gracias. Noto muchos comentarios sobre Google que parecen no funcionar cuando la recarga automática de cherrypy está encendido - alguna idea allí? Creo que podría usar un módulo WSGI que no parpadea. – Wells

+2

Tenga en cuenta que CherryPy es en realidad dos componentes: un marco y servidor. Si está usando lighttpd, entonces solo está usando el framework. Si utiliza el servidor en desarrollo, entonces no necesita preocuparse por esto ya que se autorecargará automágicamente. Una vez que se mueva a producción, * entonces * cambiaría a lighttpd. –

0

Desde el puntero de vista de un programa-software-escritor: Todo esto depende de cómo se organicen los metadatos sobre el proceso del servidor dentro de su daemon (lighttpd o fcgi). Algunos programas están diseñados para una inicialización única: MAYORMENTE esto permite un modelo de programación interna mucho más simple y de mejor rendimiento.

A menudo es muy difícil programar un proceso de servidor para volver a cargar los datos de configuración de una manera fácil. Puede que tenga que introducir bloqueos y objetos de eventos externos (señales en UNIX). Cuando puede sincronizar las estructuras de datos por diseño, es decir, solo inicializar una vez ... ¿por qué complicar las cosas al hacer que el modelo de datos se pueda modificar varias veces?