python django eclipse pydev devserver

python - PyDev y Django: ¿cómo reiniciar el servidor dev?



eclipse devserver (7)

De forma predeterminada, el comando runserver se ejecuta en modo de carga automática, que se ejecuta en un proceso separado. Esto significa que PyDev no sabe cómo detenerlo y no muestra su salida en la ventana de la consola.

Si ejecuta el comando runserver --noreload en runserver --noreload lugar, el cargador automático se deshabilitará. Luego puede ver la salida de la consola y detener el servidor normalmente. Sin embargo, esto significa que los cambios en sus archivos de Python no serán efectivos hasta que reinicie manualmente el servidor.

Soy nuevo en Django. Creo que estoy cometiendo un simple error.

Puse en marcha el servidor dev con Pydev:

RHaga clic en proyecto >> Django >> Comando personalizado >> runserver

El servidor se acercó, y todo fue genial. Pero ahora estoy tratando de detenerlo, y no puedo entender cómo. Detuve el proceso en la consola de PyDev y cerré Eclipse, pero las páginas web todavía se están publicando desde http://127.0.0.1:8000 .

Inicié y salí del servidor desde la línea de comandos normalmente:

python manage.py runserver

Pero el servidor todavía está arriba. ¿Qué estoy haciendo mal aquí?


Edición: las últimas versiones de PyDev (desde PyDev 3.4.1) ya no necesitan ninguna solución:

es decir: PyDev eliminará correctamente los subprocesos en una operación de proceso de eliminación y, al depurar incluso con una carga regular activada, PyDev adjuntará el depurador a los procesos secundarios.

Respuesta anterior (para versiones de PyDev anteriores a 3.4.1):

Desafortunadamente, eso se espera, ya que PyDev simplemente eliminará el proceso principal (es decir, como si en lugar de ctrl + C eliminara el proceso principal en el administrador de tareas).

La solución sería editar el propio Django para que el proceso hijo realice una encuesta en el proceso padre para saber que aún está vivo y salir si no lo está ... ver: ¿Cómo hacer que el proceso hijo muera después de que el padre salga? para una referencia.

Después de un vistazo rápido parece estar relacionado con django / utils / autoreload.py y la forma en que inicia las cosas, por lo tanto, sería necesario iniciar un hilo que siga viendo si el padre está vivo y si no lo está, mata al proceso secundario: informé que como error en Django: https://code.djangoproject.com/ticket/16982

Nota: como solución alternativa para PyDev, puede hacer que Django asigne una nueva consola (fuera de PyDev) mientras se ejecuta desde PyDev (por lo tanto, hasta que Django disponga de una solución adecuada, el parche a continuación se puede usar para hacer que el Django se asigne automáticamente) una nueva consola - donde puede usar Ctrl + C correctamente.

Index: django/utils/autoreload.py =================================================================== --- django/utils/autoreload.py (revision 16923) +++ django/utils/autoreload.py (working copy) @@ -98,11 +98,14 @@ def restart_with_reloader(): while True: args = [sys.executable] + [''-W%s'' % o for o in sys.warnoptions] + sys.argv - if sys.platform == "win32": - args = [''"%s"'' % arg for arg in args] new_environ = os.environ.copy() new_environ["RUN_MAIN"] = ''true'' - exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ) + + import subprocess + popen = subprocess.Popen(args, env=new_environ, creationflags=subprocess.CREATE_NEW_CONSOLE) + exit_code = popen.wait() if exit_code != 3: return exit_code


Ejecute el proyecto 1. Haga clic derecho en el proyecto (no en subcarpetas) 2. Ejecute como> Pydev: Django

Terminar 1. Haga clic en terminar en la ventana de la consola

El servidor esta caido


Normalmente lo ejecuto desde la consola. Ejecutar desde PyDev agrega una confusión innecesaria y no brinda ningún beneficio hasta que usted use la depuración interactiva de la GUI de PyDev.


Si opera en Windows usando el CMD: Salga del servidor con CTRL + BREAK .

python manage.py runserver localhost:8000


Solución: cree un error de intérprete en algún archivo de proyecto. Esto hará que el servidor se bloquee. El servidor puede reiniciarse normalmente.


puede salir haciendo clic en Ctrl + Pause teclas. Tenga en cuenta que la tecla Pausa puede llamarse Break y en algunas computadoras portátiles se hace usando la combinación Fn + F12 . Espero que esto pueda ayudar.