Lỗi máy chủ Django: cổng đã được sử dụng


204

Khởi động lại máy chủ Django hiển thị lỗi sau:

this port is already running....

Sự cố này xảy ra cụ thể trên Ubuntu chứ không phải các hệ điều hành khác. Làm thế nào tôi có thể giải phóng cổng để khởi động lại máy chủ?

Câu trả lời:


536

Một giải pháp đơn giản hơn chỉ cần gõ sudo fuser -k 8000/tcp. Điều này sẽ giết tất cả các quá trình liên quan đến cổng 8000.

BIÊN TẬP:

Đối với người dùng osx bạn có thể sử dụng sudo lsof -t -i tcp:8000 | xargs kill -9


23
Trên mac bạn cần sử dụng sudo lsof -i tcp:8000sau đó tiêu diệt id quá trình hiển thị.
gordonc

Vì vậy, bất cứ điều gì cổng chỉ là thay thế 8000 với cổng xảy ra.
Manish Shrivastava

Tôi đang gặp lỗi này, nhưng tôi đã giết tất cả mọi thứ trên cổng.
giang hồ0810

57
netstat -ntlp

Nó sẽ hiển thị một cái gì đó như thế này.

   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     

Vì vậy, bây giờ chỉ cần đóng cổng trong đó Django / python đã chạy bằng cách giết quá trình liên quan đến nó.

kill -9 PID

trong trường hợp của tôi

kill -9 6599

Bây giờ hãy chạy ứng dụng Django của bạn.


Đối với điều này, chúng ta cần cài đặt các công cụ mạng.
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

Vì vậy, bạn cố gắng để khởi động lại máy chủ, trong khi một cái đã chạy? Điều đó sẽ không hoạt động vì người đầu tiên sẽ sử dụng cổng HTTP. Bạn phải giết hoặc chấm dứt cái đầu tiên, trước khi thử chạy lại (ít nhất là chạy nó trên cùng một cổng).
Một số lập trình viên anh chàng

Nó hoạt động vì bạn đã giết cá thể hiện đang chạy, đó là những gì tôi nói bạn phải làm. Bạn không thể có hai chương trình nghe trên cùng một cổng mạng, điều đó thật dễ dàng. Vì vậy, đây là một giải pháp cho một cái gì đó không thực sự là một vấn đề, chỉ là một thực tế.
Một số lập trình viên anh chàng

Tôi xin lỗi nếu tôi có thể trở nên mạnh mẽ, tôi chỉ cảm thấy hơi gắt gỏng ngày hôm nay. : /
Một số lập trình viên anh chàng

5

Theo mặc định, lệnh máy chủ khởi động máy chủ phát triển trên IP nội bộ tại cổng 8000.

Nếu bạn muốn thay đổi cổng của máy chủ, hãy chuyển nó dưới dạng đối số dòng lệnh. Chẳng hạn, lệnh này khởi động máy chủ trên cổng 8080:

python manage.py runserver 8080

1
@StephenRauch, câu hỏi không hỏi WHO đang sử dụng cổng. Câu hỏi là nêu một lỗi được ném. Đây là một giải pháp về cách khắc phục lỗi đó.
Freddy

OP đang hỏi cách khởi động lại máy chủ trên cổng 8000, không yêu cầu chạy nó trên một cổng khác
uclaastro

4

Chúng tôi không sử dụng lệnh này {sudo lsof -t -i tcp: 8000 | xargs kill -9} Vì nó đóng tất cả các tab ... Bạn nên sử dụng để

ps -ef | trăn grep

giết -9 process_id

ps -ef | grep python (hiển thị tất cả quá trình với id)

kill -9 11633 (11633 là id quy trình để: - / bin / python Manage.txt ranerver)


2

Đây là một bản mở rộng về câu trả lời của Mounir. Tôi đã thêm một tập lệnh bash bao gồm điều này cho bạn. Chỉ cần chạy ./scripts/runserver.shthay vì ./manage.py runservervà nó sẽ hoạt động chính xác theo cùng một cách.

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

Xin lỗi vì nhận xét trong một bài viết cũ nhưng nó có thể giúp mọi người

Chỉ cần gõ này trên thiết bị đầu cuối của bạn

killall -9 python3

Nó sẽ giết tất cả python3 đang chạy trên máy của bạn và nó sẽ giải phóng tất cả cổng của bạn. Giúp tôi rất nhiều khi làm việc trong dự án Django .


1

Đối với tôi, điều này xảy ra vì yêu cầu API của tôi trong Postman đang bị chặn bởi một điểm dừng của trình gỡ lỗi trong ứng dụng của tôi ... khiến cho yêu cầu bị treo. Nếu tôi hủy yêu cầu trong Postman trước khi tắt máy chủ của ứng dụng, lỗi sẽ không xảy ra ở nơi đầu tiên.

-> Vì vậy, hãy thử hủy bất kỳ yêu cầu mở nào bạn đang thực hiện trong các chương trình khác.

Trên macOS, tôi đã sử dụng sudo lsof -t -i tcp:8000 | xargs kill -9khi tôi quên hủy yêu cầu http đang mở để giải quyết error = That port is already in use.Điều này cũng vậy, hoàn thành đóng ứng dụng Postman của tôi, đó là lý do giải pháp đầu tiên của tôi tốt hơn.


1

Nhập 'fg' làm lệnh sau ctl-c đó.
Lệnh:
Fg sẽ hiển thị cái nào đang chạy trên nền. Sau đó ctl-c sẽ dừng nó.

fg
ctl-c


0

ps phụ | quản lý grep

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

giết -9 3438


2
Mặc dù đoạn mã này có thể giải quyết câu hỏi, bao gồm một lời giải thích thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. Xin vui lòng cố gắng không làm đông mã của bạn với các bình luận giải thích, điều này làm giảm khả năng đọc của cả mã và các giải thích!
rene

0

Dường như IDE, VSCode, Puppeteer, gật đầu, express, v.v. gây ra vấn đề này, bạn đã chạy một quá trình trong nền hoặc chỉ đóng khu vực gỡ lỗi [trình duyệt, thiết bị đầu cuối, v.v.] hoặc bất cứ điều gì, dù sao, tôi đã trả lời cùng một câu hỏi trước đây, đây là liên kết của bạn

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


0

Nếu bạn gặp phải vấn đề này trong mac, bạn chỉ cần mở trình theo dõi hoạt động và buộc khá trăn, sau đó thử lại

nhập mô tả hình ảnh ở đây



0

Trong trường hợp Bạn đang sử dụng thiết bị đầu cuối màn hình của VSC, lỗi có thể là do thực tế là bạn đã chạy máy chủ trong một số vỏ khác.

Chỉ cần nhấp vào dropbox bên trái dấu + trong tiêu đề của thiết bị đầu cuối của VSC và chọn một số shell khác và kiểm tra xem máy chủ đã chạy ở đó chưa. Thoát khỏi máy chủ đó và bạn đã sẵn sàng khởi chạy một máy chủ khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.