ข้อผิดพลาดเซิร์ฟเวอร์ Django: พอร์ตถูกใช้งานแล้ว


204

การรีสตาร์ทเซิร์ฟเวอร์ Django แสดงข้อผิดพลาดต่อไปนี้:

this port is already running....

ปัญหานี้เกิดขึ้นกับ Ubuntu โดยเฉพาะและไม่ใช่ระบบปฏิบัติการอื่น ฉันจะเพิ่มพอร์ตเพื่อรีสตาร์ทเซิร์ฟเวอร์ได้อย่างไร

คำตอบ:


536

sudo fuser -k 8000/tcpวิธีการแก้ปัญหาง่ายขึ้นเพียงแค่ชนิด นี่ควรจะฆ่ากระบวนการทั้งหมดที่เกี่ยวข้องกับพอร์ต 8000

แก้ไข:

สำหรับผู้ใช้ osx คุณสามารถใช้ sudo lsof -t -i tcp:8000 | xargs kill -9


23
ใน mac คุณต้องใช้sudo lsof -i tcp:8000แล้วฆ่ารหัสกระบวนการที่ปรากฏขึ้น
gordonc

ดังนั้นอะไรก็ตามที่พอร์ตเพิ่งแทนที่ 8000 ด้วยพอร์ตบล็อกจะเกิดขึ้น
Manish Shrivastava

ฉันได้รับข้อผิดพลาดนี้ แต่ฉันได้ฆ่าทุกอย่างบนพอร์ต
wanderer0810

57
netstat -ntlp

มันจะแสดงบางอย่างเช่นนี้

   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     

ดังนั้นตอนนี้ให้ปิดพอร์ตที่ Django / python ทำงานอยู่แล้วโดยฆ่ากระบวนการที่เกี่ยวข้อง

kill -9 PID

ในกรณีของฉัน

kill -9 6599

ตอนนี้รันแอพ Django ของคุณ


สำหรับสิ่งนี้เราต้องติดตั้งเครื่องมือเน็ต
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

คุณลองเริ่มเซิร์ฟเวอร์อีกครั้งในขณะที่เซิร์ฟเวอร์กำลังทำงานอยู่? ไม่สามารถใช้งานได้เนื่องจากพอร์ตแรกจะใช้พอร์ต HTTP คุณต้องฆ่าหรือยุติอันแรกก่อนที่จะพยายามรันอีกครั้ง (อย่างน้อยก็รันบนพอร์ตเดียวกัน)
โปรแกรมเมอร์บางคนเพื่อน

มันใช้งานได้เพราะคุณฆ่าอินสแตนซ์ที่กำลังทำงานอยู่ซึ่งเป็นสิ่งที่ฉันบอกว่าคุณต้องทำ คุณไม่สามารถมีสองโปรแกรมที่ฟังบนพอร์ตเครือข่ายเดียวกันมันง่ายเหมือนที่เคย ดังนั้นนี่คือทางออกสำหรับสิ่งที่ไม่เป็นปัญหา แต่เป็นความจริง
โปรแกรมเมอร์บางคนเพื่อน

ฉันขอโทษถ้าฉันอาจแข็งแกร่งขึ้นฉันแค่รู้สึกไม่พอใจเล็กน้อยในวันนี้ : /
โปรแกรมเมอร์บางคนเพื่อน

5

โดยค่าเริ่มต้นคำสั่ง runserver เริ่มต้นเซิร์ฟเวอร์การพัฒนาบน IP ภายในที่พอร์ต 8000

หากคุณต้องการเปลี่ยนพอร์ตของเซิร์ฟเวอร์ให้ส่งผ่านเป็นอาร์กิวเมนต์บรรทัดคำสั่ง ตัวอย่างเช่นคำสั่งนี้เริ่มเซิร์ฟเวอร์บนพอร์ต 8080:

python manage.py runserver 8080

1
@StephenRauch คำถามไม่ได้ถามว่าใครใช้พอร์ต คำถามกำลังระบุข้อผิดพลาดที่ถูกส่งออกไป นี่เป็นวิธีการแก้ไขข้อผิดพลาดนั้น
Freddy

OP กำลังถามว่าจะรีสตาร์ทเซิร์ฟเวอร์บนพอร์ต 8000 ได้อย่างไรไม่ขอให้ทำงานบนพอร์ตอื่น
uclaastro

4

เราไม่ใช้คำสั่งนี้ {sudo lsof -t -i tcp: 8000 | xargs kill -9} เพราะมันปิดแท็บทั้งหมด ... คุณควรใช้

ps -ef | หลาม grep

kill -9 process_id

ps -ef | grep python (แสดงกระบวนการทั้งหมดด้วย id)

kill -9 11633 (11633 เป็นรหัสกระบวนการไปยัง: - / bin / python Manage.py runserver)


2

นี่คือการขยายตัวในคำตอบของ Mounir ฉันได้เพิ่มสคริปต์ทุบตีที่ครอบคลุมสิ่งนี้ให้คุณ เพียงแค่เรียกใช้./scripts/runserver.shแทน./manage.py runserverและมันจะทำงานในลักษณะเดียวกัน

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

ขออภัยสำหรับความคิดเห็นในโพสต์เก่า แต่มันอาจช่วยให้ผู้คน

เพียงพิมพ์ข้อความนี้บนเทอร์มินัลของคุณ

killall -9 python3

มันจะฆ่า python3 ทั้งหมดที่ทำงานบนเครื่องของคุณและจะเพิ่มพอร์ตทั้งหมดของคุณ ช่วยฉันมากเวลาทำงานในโครงการDjango


1

สำหรับฉันสิ่งนี้เกิดขึ้นเพราะคำขอ API ของฉันในบุรุษไปรษณีย์ถูกดักจับโดยจุดพักดีบักเกอร์ในแอปของฉัน ... ออกจากการร้องขอค้างไว้ หากฉันยกเลิกคำขอในบุรุษไปรษณีย์ก่อนที่จะฆ่าเซิร์ฟเวอร์แอปของฉันข้อผิดพลาดจะไม่เกิดขึ้นตั้งแต่แรก

-> ดังนั้นให้ลองยกเลิกคำขอเปิดที่คุณทำในโปรแกรมอื่น

ใน macOS ฉันใช้sudo lsof -t -i tcp:8000 | xargs kill -9เมื่อฉันลืมที่จะยกเลิกการร้องขอ http แบบเปิดเพื่อแก้ไขปัญหาerror = That port is already in use.นี้ด้วยเช่นกันการปิดแอพบุรุษไปรษณีย์ของฉันเสร็จสมบูรณ์ซึ่งเป็นสาเหตุที่โซลูชันแรกของฉันดีกว่า


1

พิมพ์ 'fg' เป็นคำสั่งหลังจากนั้น ctl-c
คำสั่ง:
Fg จะแสดงว่ากำลังทำงานอยู่บนพื้นหลังใด หลังจากนั้น ctl-c จะหยุดมัน

fg
ctl-c


0

ps aux | grep จัดการ

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

ฆ่า -9 3438


2
ในขณะที่ข้อมูลโค้ดนี้อาจแก้ไขคำถามรวมถึงคำอธิบายช่วยปรับปรุงคุณภาพของโพสต์ของคุณ จำไว้ว่าคุณกำลังตอบคำถามสำหรับผู้อ่านในอนาคตและคนเหล่านั้นอาจไม่ทราบสาเหตุของการแนะนำรหัสของคุณ โปรดอย่าพยายามทำให้รหัสของคุณแน่นเกินไปด้วยคำอธิบายที่อธิบายซึ่งจะช่วยลดความสามารถในการอ่านของทั้งรหัสและคำอธิบาย!
rene

0

ดูเหมือนว่า IDEs, VSCode, Puppeteer, nodemon, express, ฯลฯ ทำให้เกิดปัญหานี้คุณรันกระบวนการในพื้นหลังหรือเพิ่งปิดพื้นที่แก้จุดบกพร่อง [เบราว์เซอร์เทอร์มินัล ฯลฯ ] หรืออะไรก็ตามฉันตอบคำถามเดียวกัน ก่อนหน้านี่คือลิงค์

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


0

หากคุณประสบปัญหานี้ใน mac คุณเพียงแค่ต้องเปิดการตรวจสอบกิจกรรมและบังคับให้หลามเลยลองอีกครั้ง

ป้อนคำอธิบายรูปภาพที่นี่



0

ในกรณีที่คุณใช้จอเทอร์มินัลหน้าจอของ VSC ข้อผิดพลาดอาจเกิดจากข้อเท็จจริงที่ว่าคุณได้รันเซิร์ฟเวอร์ในเชลล์อื่นแล้ว

เพียงคลิกที่ดรอปบ็อกซ์ทางด้านซ้ายของเครื่องหมาย + ในส่วนหัวของเทอร์มินัลของ VSC และเลือกเชลล์อื่น ๆ และตรวจสอบว่าเซิร์ฟเวอร์ทำงานอยู่ที่นั่นหรือไม่ ออกจากเซิร์ฟเวอร์นั้นและคุณพร้อมที่จะเปิดใช้เซิร์ฟเวอร์อื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.