Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

Quiero cambios en el código surtan efecto inmediato durante el desarrollo. ¿Cómo puedo detectar archivos cambiado y volver a cargarlos en el (2,7) aplicación Python corriendo?

Editar:

Después de leer las páginas enlazadas por 'Ivo van der Wijk', creo que sería mejor para reiniciar la aplicación web cuando el código cambia - como Django hace. Así que la pregunta real es: Cómo supervisar las modificaciones del archivo

¿Fue útil?

Solución

Esta pregunta se ha hecho un número de veces

Puede utilizar recarga (módulo) para esto, pero cuidado con los efectos secundarios desagradables. Por ejemplo, el código existente se basa en el código original, no será mágicamente conseguir nuevos atributos o baseclasses añadido.

Otros consejos

Yo quería el mismo efecto para algunos de mis scripts de Python, así que fui e hice el guión SourceChangeMonitor.py. Lo puede encontrar con instrucciones aquí . Si lo que desea es el guión, aquí es una directa enlace

Esto no tiene sentido para la mayoría de las aplicaciones porque obtendrá efectos secundarios mediante el uso de reload. Además, el tiempo que pasa en el código que detecta los cambios y vuelve a cargar todos los módulos se podrían haber gastado en solo reiniciar la aplicación. Es muy complicado si importar una gran cantidad de módulos o tener un proyecto que contiene muchos sub-módulos.

En algunos casos, es una buena idea sin embargo. La web framework Django proporciona un servidor de desarrollo (manage.py runserver) que vuelve a cargar automáticamente los módulos modificados. Echar un vistazo a la django.utils.autoreload - pone a prueba todos los archivos de Python para las modificaciones utilizando el tiempo de modificación de los archivos. Como se dijo antes, esto es sólo una idea buena para algunas aplicaciones. Las aplicaciones web son algo sin estado y por lo tanto pueden ser recargadas con pocos o ningún efecto secundario.

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