Django Sunucu Hatası: bağlantı noktası zaten kullanılıyor


205

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:


538

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


23
Mac'te, sudo lsof -i tcp:8000sonra ortaya çıkan işlem kimliklerini kullanmanız gerekir .
gordonc

Bu nedenle, bağlantı noktası ne olursa olsun, 8000 yerine bağlantı noktası oluşur.
Manish Shrivastava

Bu hatayı alıyorum, ancak limanda her şeyi öldürdüm.
wanderer0810

58
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.


bunun için ağ araçları kurmamız gerekiyor.
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

Yani bir sunucu çalışıyorken sunucuyu yeniden başlatmayı mı deniyorsunuz? İlk bağlantı noktası HTTP bağlantı noktasını kullanacağı için bu çalışmaz. Tekrar çalıştırmayı denemeden önce ilkini öldürmeli veya sonlandırmalısınız (en azından aynı bağlantı noktasında çalıştırmalısınız).
Bazı programcı dostum

Çalışıyor çünkü şu anda çalışan örneği öldürdün, bunu yapmam gerektiğini söyledim. Aynı ağ bağlantı noktasını dinleyen iki programınız olamaz, bu kadar kolay. Yani bu gerçekten sorun olmayan bir şeye bir çözüm, sadece bir gerçek.
Bazı programcı dostum

Güçlü olmaya başlayabilirsem özür dilerim, bugün kendimi biraz huysuz hissediyorum. : /
Bazı programcı adam

5

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

1
@StephenRauch, soru DSÖ'nün bağlantı noktasını kullandığını sormuyor. Soru atılan bir hatayı belirtmektir. Bu, bu hatanın nasıl düzeltileceği konusunda bir çözümdür.
Freddy

OP, başka bir bağlantı noktasında çalıştırmak için sormadan, bağlantı noktası
8000'de

4

Bu komutu kullanmıyoruz {sudo lsof -t -i tcp: 8000 | xargs kill -9} Tüm sekmelere yakın olduğu için ...

ps -ef | grep python

kill -9 process_id

ps -ef | grep python (tüm işlemleri id ile göster)

kill -9 11633 (11633, - / bin / python manage.py runserver için bir işlem kimliğidir)


2

Bu Mounir'in cevabındaki bir genişlemedir. Bunu sizin için kapsayan bir bash betiği ekledim. Sadece ./scripts/runserver.shyerine çalıştırın ./manage.py runserverve 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

2

Eski bir gönderide yorum yaptığım için üzgünüm ama insanlara yardımcı olabilir

Bunu terminalinize yazın

killall -9 python3

Makinenizde çalışan tüm python3'leri öldürecek ve tüm portunuzu serbest bırakacaktır. Django projesinde ne zaman çalışmam gerektiğine çok yardımcı oldum .


1

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.


1

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


0

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


2
Bu kod snippet'i soruyu çözebilir, ancak bir açıklama da dahil olmak üzere , yayınınızın kalitesini artırmaya yardımcı olur. Gelecekte okuyucular için soruyu cevapladığınızı ve bu kişilerin kod önerinizin nedenlerini bilmeyebileceğini unutmayın. Lütfen kodunuzu açıklayıcı yorumlarla doldurmamaya çalışın, bu hem kodun hem de açıklamaların okunabilirliğini azaltır!
rene


0

Mac'te bu sorunla karşılaşırsanız, sadece etkinlik izleyicisini açmanız ve oldukça python'u zorlamanız gerekir.

resim açıklamasını buraya girin



0

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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.