Django服务器错误:端口已在使用中


Answers:


536

只需键入一个更简单的解决方案sudo fuser -k 8000/tcp。这将终止与端口8000相关的所有进程。

编辑:

对于osx用户,您可以使用 sudo lsof -t -i tcp:8000 | xargs kill -9


23
在Mac上,您需要使用sudo lsof -i tcp:8000然后杀死显示的进程ID。
gordonc

因此,只要将端口替换为8000,就会发生阻塞。
Manish Shrivastava

我遇到此错误,但是我已经杀死了端口上的所有内容。
wanderer0810 2009年

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相关的进程来关闭已经运行Django / python的端口。

kill -9 PID

就我而言

kill -9 6599

现在运行您的Django应用。


为此,我们需要安装net-tools。
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,问题不问世卫组织正在使用该港口。问题是正在抛出错误。这是有关如何修复该错误的解决方案。
弗雷迪

OP正在询问如何在端口8000上重新启动服务器,而不是要求在另一个端口上运行它
uclaastro

4

我们不使用此命令{sudo lsof -t -i tcp:8000 | xargs kill -9}因为它关闭了所有标签...您应该使用

ps -ef | grep python

杀死-9 process_id

ps -ef | grep python(显示所有具有id的进程)

kill -9 11633(11633是一个进程ID:-/ bin / python manage.py runserver)


2

这是对Mounir的回答的扩展。我添加了一个bash脚本来为您解决这个问题。只是运行./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

对我来说,发生这种情况是因为我的应用程序中的调试器断点拦截了Postman中的API请求,从而使请求挂起。如果我在终止我的应用程序服务器之前在Postman中取消了该请求,则该错误不会首先发生。

->因此,请尝试取消您在其他程序中发出的所有打开的请求。

在macOS上,我一直sudo lsof -t -i tcp:8000 | xargs kill -9在忘记取消打开的http请求来解决error = That port is already in use.该问题,这也完全关闭了我的Postman应用程序,这就是为什么我的第一个解决方案更好的原因。


1

在该ctl-c之后键入'fg'作为命令。
命令:
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

似乎是IDE,VSCode,Puppeteer,nodemon,express等引起了此问题,您在后台运行了一个进程,或者只是关闭了调试区域[浏览器,终端等]或其他任何东西,无论如何,我都回答了​​同样的问题以前,这是您的链接

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




0

如果您使用的是VSC的屏幕终端,则该错误可能是由于您已经在其他Shell中运行了服务器。

只需单击VSC终端标题中+号左侧的下拉框,然后选择其他外壳程序,然后检查服务器是否已在此处运行。退出该服务器,您就可以启动另一个服务器了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.