Ponowne uruchomienie serwera Django wyświetla następujący błąd:
this port is already running....
Ten problem występuje szczególnie w systemie Ubuntu, a nie w innych systemach operacyjnych. Jak mogę zwolnić port, aby zrestartować serwer?
Ponowne uruchomienie serwera Django wyświetla następujący błąd:
this port is already running....
Ten problem występuje szczególnie w systemie Ubuntu, a nie w innych systemach operacyjnych. Jak mogę zwolnić port, aby zrestartować serwer?
Odpowiedzi:
Prostsze rozwiązanie wystarczy wpisać sudo fuser -k 8000/tcp
. To powinno zabić wszystkie procesy związane z portem 8000.
EDYTOWAĆ:
Dla użytkowników osx możesz użyć sudo lsof -t -i tcp:8000 | xargs kill -9
netstat -ntlp
Pokaże coś takiego.
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
Teraz wystarczy zamknąć port, w którym działa już Django / python, zabijając powiązany z nim proces.
kill -9 PID
w moim przypadku
kill -9 6599
Teraz uruchom aplikację Django.
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
Domyślnie polecenie runserver uruchamia serwer programistyczny na wewnętrznym adresie IP na porcie 8000.
Jeśli chcesz zmienić port serwera, przekaż go jako argument wiersza polecenia. Na przykład to polecenie uruchamia serwer na porcie 8080:
python manage.py runserver 8080
Nie używamy tego polecenia {sudo lsof -t -i tcp: 8000 | xargs kill -9} Ponieważ to zamknie wszystkie karty ... Powinieneś użyć
ps -ef | pyton grep
zabij -9 id_procesu
ps -ef | grep python (pokaż cały proces z identyfikatorem)
kill -9 11633 (11633 to identyfikator procesu do: - / bin / python manage.py runserver)
To rozszerzenie odpowiedzi Mounira. Dodałem dla ciebie skrypt bash. Po prostu uruchom ./scripts/runserver.sh
zamiast ./manage.py runserver
i będzie działać dokładnie w ten sam sposób.
#!/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
Dla mnie dzieje się tak, ponieważ moje żądanie API w Postmanie jest przechwytywane przez punkt przerwania debuggera w mojej aplikacji ... pozostawiając zawieszone żądanie. Jeśli anuluję żądanie w Postman przed zabiciem serwera mojej aplikacji, błąd nie wystąpi w pierwszej kolejności.
-> Więc spróbuj anulować wszelkie otwarte żądania składane w innych programach.
W systemie macOS używam, sudo lsof -t -i tcp:8000 | xargs kill -9
gdy zapominam anulować otwarte żądanie HTTP w celu rozwiązania. error = That port is already in use.
Również kompletne zamyka moją aplikację Postman, dlatego moje pierwsze rozwiązanie jest lepsze.
Wpisz „fg” jako polecenie po tym ctl-c.
Polecenie:
Fg pokaże, które działa w tle. Po tym ctl-c go zatrzyma.
fg
ctl-c
ps aux | grep zarządzać
ubuntu 3438 127.0.0 2.3 40256 14064 pkt / 0 T 06:47 0:00 python manage.py runserver
zabij -9 3438
Wygląda na to, że IDE, VSCode, Puppeteer, nodemon, express itp. Powodują ten problem, uruchomiłeś proces w tle lub właśnie zamknąłeś obszar debugowania [przeglądarka, terminal itp.] Lub cokolwiek, w każdym razie odpowiedziałem na to samo pytanie wcześniej, tutaj jest link
Jeśli masz do czynienia z tym problemem w systemie Mac, wystarczy otworzyć monitor aktywności i wymusić dość Python, a następnie spróbuj ponownie
W przypadku korzystania z terminalu ekranowego VSC, błąd może wynikać z faktu, że już uruchomiłeś serwer w innej powłoce.
Wystarczy kliknąć dropbox po lewej stronie znaku + w nagłówku terminala VSC i wybrać inną powłokę i sprawdzić, czy serwer już tam działa. Zamknij ten serwer, a będziesz gotowy do uruchomienia innego serwera.
sudo lsof -i tcp:8000
a następnie zabić identyfikatory procesu, które się wyświetlają.