Error del servidor Django: el puerto ya está en uso


204

Reiniciar el servidor Django muestra el siguiente error:

this port is already running....

Este problema ocurre específicamente en Ubuntu y no en otros sistemas operativos. ¿Cómo puedo liberar el puerto para reiniciar el servidor?

Respuestas:


536

Una solución más simple simplemente escriba sudo fuser -k 8000/tcp. Esto debería eliminar todos los procesos asociados con el puerto 8000.

EDITAR:

Para usuarios de osx puedes usar sudo lsof -t -i tcp:8000 | xargs kill -9


23
En Mac, debe usar y sudo lsof -i tcp:8000luego eliminar los identificadores de proceso que aparecen.
gordonc

Entonces, cualquiera que sea el puerto, simplemente reemplace 8000 con el puerto donde ocurre el bloqueo.
Manish Shrivastava

Recibo este error, pero he matado todo en el puerto.
wanderer0810

57
netstat -ntlp

Mostrará algo como esto.

   Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State           PID/Program name    
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      6599/python         
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      -                   
tcp        0      0 192.168.124.1:53        0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::3306                 :::*                    LISTEN     

Así que ahora solo cierre el puerto en el que Django / python ya se está ejecutando eliminando el proceso asociado con él.

kill -9 PID

en mi caso

kill -9 6599

Ahora ejecuta tu aplicación Django.


para esto, necesitamos instalar net-tools.
Pooja Khatri

12
ps aux | grep -i manage

after that you will see all process 


ubuntu@ip-10-154-22-113:~/django-apps/projectname$ ps aux | grep -i manage
ubuntu    3439  0.0  2.3  40228 14064 pts/0    T    06:47   0:00 python manage.py runserver project name
ubuntu    3440  1.4  9.7 200996 59324 pts/0    Tl   06:47   2:52 /usr/bin/python manage.py runserver project name
ubuntu    4581  0.0  0.1   7988   892 pts/0    S+   10:02   0:00 grep --color=auto -i manage


kill -9 process id


e.d kill -9 3440


`enter code here`after that :

python manage.py runserver project name

¿Entonces intenta iniciar el servidor nuevamente, mientras uno ya se está ejecutando? Eso no funcionará, ya que el primero utilizará el puerto HTTP. Debe matar o terminar el primero, antes de intentar ejecutar nuevamente (al menos ejecutarlo en el mismo puerto).
Algún programador amigo

Está funcionando porque mataste la instancia actualmente en ejecución, que es lo que dije que tienes que hacer. No puede tener dos programas escuchando en el mismo puerto de red, es tan fácil como eso. Entonces, esta es una solución a algo que no es realmente un problema, solo un hecho.
Algún programador amigo

Lo siento si hubiera llegado a ser fuerte, me siento un poco malhumorado hoy. : /
Algún programador amigo

5

De manera predeterminada, el comando runserver inicia el servidor de desarrollo en la IP interna en el puerto 8000.

Si desea cambiar el puerto del servidor, páselo como un argumento de línea de comandos. Por ejemplo, este comando inicia el servidor en el puerto 8080:

python manage.py runserver 8080

1
@StephenRauch, la pregunta no se pregunta quién está utilizando el puerto. La pregunta es declarar un error al ser lanzado. Esta es una solución sobre cómo solucionar ese error.
Freddy el

El OP pregunta cómo reiniciar el servidor en el puerto 8000, no solicita ejecutarlo en otro puerto
uclaastro

4

No usamos este comando {sudo lsof -t -i tcp: 8000 | xargs kill -9} Porque está cerca de todas las pestañas ... Deberías usar para

ps -ef | grep python

kill -9 process_id

ps -ef | grep python (mostrar todo el proceso con id)

kill -9 11633 (11633 es una identificación de proceso para: - / bin / python manage.py runserver)


2

Esta es una expansión de la respuesta de Mounir. He agregado un script bash que cubre esto para ti. Simplemente ejecute en ./scripts/runserver.shlugar de ./manage.py runservery funcionará exactamente de la misma manera.

#!/bin/bash

pid=$(ps aux | grep "./manage.py runserver" | grep -v grep | head -1 | xargs | cut -f2 -d" ")

if [[ -n "$pid" ]]; then
    kill $pid
fi

fuser -k 8000/tcp
./manage.py runserver

2

Perdón por comentar en una publicación anterior, pero puede ayudar a las personas

Simplemente escriba esto en su terminal

killall -9 python3

Eliminará todos los python3 que se ejecutan en su máquina y liberará todos sus puertos. Ayúdame mucho cuando trabaje en el proyecto Django .


1

Para mí, esto sucede porque mi solicitud de API en Postman está siendo interceptada por un punto de interrupción del depurador en mi aplicación ... dejando la solicitud suspendida. Si cancelo la solicitud en Postman antes de matar el servidor de mi aplicación, el error no ocurre en primer lugar.

-> Así que intenta cancelar cualquier solicitud abierta que estés haciendo en otros programas.

En macOS, he estado usando sudo lsof -t -i tcp:8000 | xargs kill -9cuando me olvido de cancelar la solicitud http abierta para resolver error = That port is already in use.Esto también cierra mi aplicación Postman, por lo que mi primera solución es mejor.


1

Escriba 'fg' como comando después de ese ctl-c.
Comando:
Fg mostrará cuál se está ejecutando en segundo plano. Después de eso, ctl-c lo detendrá.

fg
ctl-c


0

ps aux | grep administrar

ubuntu 3438 127.0.0 2.3 40256 14064 pts / 0 T 06:47 0:00 python manage.py runserver

matar -9 3438


2
Si bien este fragmento de código puede resolver la pregunta, incluir una explicación realmente ayuda a mejorar la calidad de su publicación. Recuerde que está respondiendo la pregunta para los lectores en el futuro, y que esas personas podrían no conocer los motivos de su sugerencia de código. Por favor, también trate de no saturar su código con comentarios explicativos, ¡esto reduce la legibilidad tanto del código como de las explicaciones!
René

0

Parece que IDEs, VSCode, Puppeteer, nodemon, express, etc. causan este problema, ejecutó un proceso en segundo plano o simplemente cerró el área de depuración [navegador, terminal, etc.] o lo que sea, de todos modos, he respondido la misma pregunta antes, aquí tienes su enlace

https://stackoverflow.com/a/49797588/2918720


0

Si tiene este problema en Mac, solo necesita abrir el monitor de actividad y forzar bastante Python, luego intente nuevamente

ingrese la descripción de la imagen aquí



0

En caso de que esté utilizando el terminal de pantalla de VSC, el error podría deberse al hecho de que ya está ejecutando el servidor en otro shell.

Simplemente haga clic en el cuadro desplegable a la izquierda del signo + en el encabezado del terminal de VSC y seleccione otro shell y verifique si el servidor ya se está ejecutando allí. Salga de ese servidor y estará listo para iniciar otro servidor.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.