Errore Django Server: la porta è già in uso


204

Il riavvio del server Django visualizza il seguente errore:

this port is already running....

Questo problema si verifica specificamente su Ubuntu e non su altri sistemi operativi. Come posso liberare la porta per riavviare il server?

Risposte:


536

Una soluzione più semplice basta digitare sudo fuser -k 8000/tcp. Questo dovrebbe uccidere tutti i processi associati alla porta 8000.

MODIFICARE:

Per gli utenti osx è possibile utilizzare sudo lsof -t -i tcp:8000 | xargs kill -9


23
Su Mac devi usare sudo lsof -i tcp:8000quindi uccidere gli ID di processo che compaiono.
Gordon,

Quindi, qualunque sia la porta, basta sostituire 8000 con la porta in cui si verifica il blocco.
Manish Shrivastava,

Ricevo questo errore, ma ho ucciso tutto sulla porta.
wanderer0810,

57
netstat -ntlp

Mostrerà qualcosa del genere.

   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     

Quindi ora basta chiudere la porta in cui Django / Python è già in esecuzione uccidendo il processo ad esso associato.

kill -9 PID

nel mio caso

kill -9 6599

Ora esegui la tua app Django.


per questo, dobbiamo installare 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

Quindi si tenta di riavviare il server, mentre uno è già in esecuzione? Non funzionerà poiché il primo utilizzerà la porta HTTP. Devi uccidere o terminare il primo, prima di provare a eseguirlo di nuovo (almeno eseguilo sulla stessa porta).
Qualche programmatore, amico, il

Funziona perché hai ucciso l'istanza attualmente in esecuzione, che è quello che ho detto che devi fare. Non puoi avere due programmi in ascolto sulla stessa porta di rete, è così facile. Quindi questa è una soluzione a qualcosa che non è davvero un problema, solo un dato di fatto.
Qualche programmatore, amico, il

Mi dispiace se potrei essere diventato forte, mi sento solo un po 'scontroso oggi. : /
Qualche programmatore amico

5

Per impostazione predefinita, il comando RunServer avvia il server di sviluppo sull'IP interno sulla porta 8000.

Se si desidera modificare la porta del server, passarlo come argomento della riga di comando. Ad esempio, questo comando avvia il server sulla porta 8080:

python manage.py runserver 8080

1
@StephenRauch, la domanda non pone CHI sta usando la porta. La domanda indica che è stato generato un errore. Questa è una soluzione su come correggere l'errore.
Freddy

L'OP chiede come riavviare il server sulla porta 8000, non chiedendo di eseguirlo su un'altra porta
uclaastro

4

Non usiamo questo comando {sudo lsof -t -i tcp: 8000 | xargs kill -9} Perché è vicino a tutte le schede ... Dovresti usarlo per

ps -ef | pitone grep

kill -9 process_id

ps -ef | grep python (mostra tutto il processo con id)

kill -9 11633 (11633 è un ID processo per: - / bin / python manage.py RunServer)


2

Questa è un'espansione della risposta di Mounir. Ho aggiunto uno script bash che lo copre per te. Esegui ./scripts/runserver.shinvece di ./manage.py runservere funzionerà esattamente allo stesso modo.

#!/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

Ci scusiamo per il commento in un vecchio post, ma può aiutare le persone

Digita questo sul tuo terminale

killall -9 python3

Ucciderà tutto python3 in esecuzione sul tuo computer e libererà tutte le tue porte. Mi aiuta molto quando lavoro nel progetto Django .


1

Per me, questo accade perché la mia richiesta API in Postman viene intercettata da un punto di interruzione del debugger nella mia app ... lasciando la richiesta in sospeso. Se annullo la richiesta in Postman prima di uccidere il server della mia app, l'errore non si verifica in primo luogo.

-> Quindi prova a cancellare tutte le richieste aperte che stai facendo in altri programmi.

Su macOS, ho usato sudo lsof -t -i tcp:8000 | xargs kill -9quando ho dimenticato di annullare la richiesta http aperta per risolvere error = That port is already in use.anche questo. Completa la mia app Postman, ecco perché la mia prima soluzione è migliore.


1

Digita 'fg' come comando dopo quel ctl-c.
Comando:
Fg mostrerà quale è in esecuzione in background. Dopo che ctl-c lo fermerà.

fg
ctl-c


0

ps aux | gestire grep

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

uccidere -9 3438


2
Sebbene questo frammento di codice possa risolvere la domanda, inclusa una spiegazione aiuta davvero a migliorare la qualità del tuo post. Ricorda che in futuro stai rispondendo alla domanda dei lettori e che queste persone potrebbero non conoscere i motivi del tuo suggerimento sul codice. Si prega inoltre di cercare di non riempire il codice con commenti esplicativi, questo riduce la leggibilità sia del codice che delle spiegazioni!
rene

0

Sembra che IDE, VSCode, Puppeteer, nodemon, express, ecc. Causino questo problema, hai eseguito un processo in background o hai appena chiuso l'area di debug [browser, terminale, ecc.] O qualunque altra cosa, ho risposto alla stessa domanda prima, ecco il link

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


0

se hai riscontrato questo problema in Mac devi solo aprire Activity Monitor e forzare abbastanza Python, quindi riprovare

inserisci qui la descrizione dell'immagine



0

Nel caso in cui si stia utilizzando il terminale dello schermo del VSC, l'errore potrebbe essere dovuto al fatto che si esegue già server in un'altra shell.

Basta fare clic sulla casella a sinistra del segno + nell'intestazione del terminale di VSC e selezionare qualche altra shell e verificare se il server è già in esecuzione lì. Esci da quel server e sei pronto per avviare un altro server.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.