Django sunucusunu yeniden başlatmak aşağıdaki hatayı görüntüler:
this port is already running....
Bu sorun, diğer işletim sistemlerinde değil, özellikle Ubuntu'da oluşur. Sunucuyu yeniden başlatmak için bağlantı noktasını nasıl boşaltabilirim?
Django sunucusunu yeniden başlatmak aşağıdaki hatayı görüntüler:
this port is already running....
Bu sorun, diğer işletim sistemlerinde değil, özellikle Ubuntu'da oluşur. Sunucuyu yeniden başlatmak için bağlantı noktasını nasıl boşaltabilirim?
Yanıtlar:
Daha basit bir çözüm yazın sudo fuser -k 8000/tcp
. Bu, bağlantı noktası 8000 ile ilişkili tüm işlemleri öldürmelidir.
DÜZENLE:
Osx kullanıcıları için şunları kullanabilirsiniz: sudo lsof -t -i tcp:8000 | xargs kill -9
netstat -ntlp
Böyle bir şey gösterecek.
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
Şimdi, Django / python'un zaten çalıştığı portu, onunla ilişkili süreci öldürerek kapatın.
kill -9 PID
benim durumumda
kill -9 6599
Şimdi Django uygulamanızı çalıştırın.
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
Varsayılan olarak, runserver komutu, geliştirme sunucusunu dahili IP'de 8000 numaralı bağlantı noktasında başlatır.
Sunucunun bağlantı noktasını değiştirmek istiyorsanız, bunu komut satırı bağımsız değişkeni olarak iletin. Örneğin, bu komut sunucuyu 8080 bağlantı noktasında başlatır:
python manage.py runserver 8080
Bu Mounir'in cevabındaki bir genişlemedir. Bunu sizin için kapsayan bir bash betiği ekledim. Sadece ./scripts/runserver.sh
yerine çalıştırın ./manage.py runserver
ve tam olarak aynı şekilde çalışacaktır.
#!/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
Benim için bu, Postacı'daki API isteğimin, uygulamamdaki bir hata ayıklayıcı kesme noktası tarafından durdurulması nedeniyle gerçekleşiyor ... isteği asılı bırakıyor. Uygulamamın sunucusunu öldürmeden önce Postacı'daki isteği iptal edersem, hata ilk etapta gerçekleşmez.
-> Bu nedenle, diğer programlarda yaptığınız tüm açık istekleri iptal etmeyi deneyin.
MacOS'ta, sudo lsof -t -i tcp:8000 | xargs kill -9
çözmek için açık http isteğini iptal etmeyi unuttuğumda kullanıyorum error = That port is already in use.
Bu da, tam Postman uygulamasını kapatıyor, bu yüzden ilk çözümüm daha iyi.
Bundan sonra komut olarak 'fg' yazın ctl-c.
Komut:
Fg hangisinin arka planda çalıştığını gösterecektir. Bundan sonra ctl-c durduracak.
fg
ctl-c
ps aux | grep yönetmek
Ubuntu 3438 127.0.0 2,3 40256 14064 puan / 0 T 06:47 0:00 python manage.py runserver
öldür -9 3438
Görünüşe göre IDE'ler, VSCode, Kuklacı, nodemon, ekspres vb. Bu soruna neden oluyor, arka planda bir işlem yürüttünüz veya sadece hata ayıklama alanını [tarayıcı, terminal vb. önce, işte link
Mac'te bu sorunla karşılaşırsanız, sadece etkinlik izleyicisini açmanız ve oldukça python'u zorlamanız gerekir.
VSC'nin ekran terminalini kullanıyorsanız, Hata, zaten başka bir kabukta sunucuyu çalıştırdığınızdan kaynaklanıyor olabilir.
Sadece VSC terminalinin üstbilgisindeki + işaretinin solundaki açılır kutuyu tıklayın ve başka bir kabuk seçin ve sunucunun orada çalışıp çalışmadığını kontrol edin. Bu sunucudan çıkın ve başka bir sunucu başlatmaya hazırsınız.
sudo lsof -i tcp:8000
sonra ortaya çıkan işlem kimliklerini kullanmanız gerekir .