Django Server Fehler: Port wird bereits verwendet

202

Beim Neustart des Django-Servers wird der folgende Fehler angezeigt:

this port is already running....

Dieses Problem tritt speziell unter Ubuntu und nicht unter anderen Betriebssystemen auf. Wie kann ich den Port freigeben, um den Server neu zu starten?

Ashish Kumar Saxena
quelle

Antworten:

534

Eine einfachere Lösung geben Sie einfach ein sudo fuser -k 8000/tcp. Dies sollte alle mit Port 8000 verbundenen Prozesse beenden.

BEARBEITEN:

Für osx-Benutzer können Sie verwenden sudo lsof -t -i tcp:8000 | xargs kill -9

Mounir
quelle
23
Auf dem Mac müssen Sie sudo lsof -i tcp:8000die angezeigten Prozess-IDs verwenden und dann beenden.
Gordon
Was auch immer der Port ist, ersetzen Sie 8000 durch den Port, an dem der Block auftritt.
Manish Shrivastava
Ich erhalte diesen Fehler, aber ich habe alles am Hafen getötet.
wanderer0810
56
netstat -ntlp

Es wird so etwas zeigen.

   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     

Schließen Sie nun einfach den Port, in dem Django / Python bereits ausgeführt wird, indem Sie den damit verbundenen Prozess beenden.

kill -9 PID

in meinem Fall

kill -9 6599

Führen Sie jetzt Ihre Django-App aus.

Shekhar Singh Choudhary
quelle
Dazu müssen wir Net-Tools installieren.
Pooja Khatri
11
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
Ashish Kumar Saxena
quelle
Sie versuchen also, den Server erneut zu starten, während einer bereits ausgeführt wird? Das wird nicht funktionieren, da der erste den HTTP-Port verwendet. Sie müssen den ersten beenden oder beenden, bevor Sie erneut versuchen, ihn auszuführen (zumindest auf demselben Port).
Einige Programmierer Typ
Es funktioniert, weil Sie die aktuell ausgeführte Instanz getötet haben. Ich habe gesagt, Sie müssen dies tun. Sie können nicht zwei Programme am selben Netzwerkanschluss abhören, so einfach ist das. Dies ist also eine Lösung für etwas, das nicht wirklich ein Problem ist, sondern nur eine Tatsache.
Einige Programmierer Typ
Es tut mir leid, wenn ich zu stark geworden bin, ich fühle mich heute nur ein wenig mürrisch. : /
Einige Programmierer Typ
5

Standardmäßig startet der Befehl runserver den Entwicklungsserver auf der internen IP an Port 8000.

Wenn Sie den Port des Servers ändern möchten, übergeben Sie ihn als Befehlszeilenargument. Mit diesem Befehl wird beispielsweise der Server an Port 8080 gestartet:

python manage.py runserver 8080
Freddy
quelle
1
@StephenRauch, die Frage stellt nicht, wer den Port nutzt. Die Frage besagt, dass ein Fehler ausgelöst wird. Dies ist eine Lösung zur Behebung dieses Fehlers.
Freddy
Das OP fragt, wie der Server auf Port 8000 neu
gestartet werden soll
4

Wir verwenden diesen Befehl nicht {sudo lsof -t -i tcp: 8000 | xargs kill -9} Weil alle Registerkarten geschlossen sind ... sollten Sie verwenden

ps -ef | Grep Python

töte -9 process_id

ps -ef | grep python (zeige alle Prozesse mit id)

kill -9 11633 (11633 ist eine Prozess-ID für: - / bin / python manage.py runserver)

Herr Singh
quelle
2

Dies ist eine Erweiterung von Mounirs Antwort. Ich habe ein Bash-Skript hinzugefügt, das dies für Sie abdeckt. Laufen Sie einfach ./scripts/runserver.shstatt ./manage.py runserverund es wird genauso funktionieren.

#!/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
jstaab
quelle
2

Entschuldigung für den Kommentar in einem alten Beitrag, aber es kann Menschen helfen

Geben Sie dies einfach in Ihr Terminal ein

killall -9 python3

Es wird alle Python3 töten, die auf Ihrem Computer ausgeführt werden, und es wird Ihren gesamten Port freigeben. Hilf mir sehr, wenn ich im Django- Projekt arbeiten soll.

Antu
quelle
1

Für mich geschieht dies, weil meine API-Anfrage in Postman von einem Debugger-Haltepunkt in meiner App abgefangen wird ... und die Anfrage hängen bleibt. Wenn ich die Anforderung in Postman abbreche, bevor ich den Server meiner App beende, tritt der Fehler überhaupt nicht auf.

-> Versuchen Sie also, alle offenen Anfragen abzubrechen, die Sie in anderen Programmen stellen.

Unter macOS habe ich verwendet, sudo lsof -t -i tcp:8000 | xargs kill -9wenn ich vergessen habe, die geöffnete http-Anfrage abzubrechen, um sie zu lösen. error = That port is already in use.Außerdem wird meine Postman-App vollständig geschlossen, weshalb meine erste Lösung besser ist.

HashRocketSyntax
quelle
1

Geben Sie danach 'fg' als Befehl ctl-c ein.
Befehl:
Fg zeigt an, was im Hintergrund läuft. Danach stoppt ctl-c es.

fg
ctl-c

Mahbubcseju
quelle
0

ps aux | grep verwalten

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

töte -9 3438

Grundregeln
quelle
2
Während dieses Code-Snippet die Frage lösen kann, hilft das Hinzufügen einer Erklärung wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in Zukunft beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch, Ihren Code nicht mit erklärenden Kommentaren zu überfüllen. Dies verringert die Lesbarkeit sowohl des Codes als auch der Erklärungen!
Ren
0

Es scheint, dass IDEs, VSCode, Puppenspieler, Nodemon, Express usw. dieses Problem verursachen. Sie haben einen Prozess im Hintergrund ausgeführt oder nur den Debugging-Bereich [Browser, Terminal usw.] geschlossen oder was auch immer, ich habe dieselbe Frage beantwortet vorher, hier bist du es ist Link

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

KhogaEslam
quelle
0

Wenn Sie dieses Problem auf dem Mac haben, müssen Sie nur den Aktivitätsmonitor öffnen und ganz Python erzwingen. Versuchen Sie es dann erneut

Geben Sie hier die Bildbeschreibung ein

Ahmed Safadi
quelle
0

lsof -t -i tcp: 8000 | Xargs töten -9

Nandy
quelle
0

Wenn Sie das Bildschirmterminal des VSC verwenden, liegt der Fehler möglicherweise daran, dass Sie den Server bereits in einer anderen Shell ausgeführt haben.

Klicken Sie einfach auf die Dropbox links neben dem + -Zeichen in der Kopfzeile des Terminals von VSC, wählen Sie eine andere Shell aus und prüfen Sie, ob der Server dort bereits ausgeführt wird. Beenden Sie diesen Server und Sie können einen anderen Server starten.

Yash Verma
quelle