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

Posted

技术标签:

【中文标题】Django 服务器错误:端口已在使用中【英文标题】:Django Server Error: port is already in use 【发布时间】:2013-12-12 21:41:31 【问题描述】:

重启 Django 服务器显示如下错误:

this port is already running....

此问题专门发生在 Ubuntu 而不是其他操作系统上。如何释放端口以重新启动服务器?

【问题讨论】:

不要使用 ctrl+z 来停止服务器。正如这里提到的askubuntu.com/a/510816Control+Z 将其分流到后台,暂停。这就是您的端口已在使用中的原因。 【参考方案1】:
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 端口。您必须先杀死或终止第一个,然后再尝试再次运行(至少在同一端口上运行它)。 它工作正常,因为你杀死了当前正在运行的实例,这是我说你必须做的。你不能让两个程序监听同一个网络端口,就这么简单。所以这是一个解决方案,它不是真正的问题,只是一个事实。 很抱歉,我可能会变得强壮,我今天只是有点脾气暴躁。 ://【参考方案2】:

更简单的解决方案只需输入sudo fuser -k 8000/tcp。 这应该会杀死与端口 8000 关联的所有进程。

编辑:

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

【讨论】:

在 Mac 上你需要使用 sudo lsof -i tcp:8000 然后杀死显示的进程 ID。 所以无论端口是什么,只需将 8000 替换为发生阻塞的端口即可。 我收到了这个错误,但是我已经杀死了端口上的所有东西。 有效!在 mac 上:sudo lsof -i tcp:8000 请不要将kill -9 推荐为常规解决方案。 -9 选项是不可屏蔽的,并且会阻止进程自行清理;它真的应该只在没有其他方法的情况下使用。【参考方案3】:

这是对 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

【讨论】:

【参考方案4】:
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 应用程序。

【讨论】:

为此,我们需要安装net-tools。 如果以后有人遇到这个问题,我已经使用命令 $ sudo lsof -i tcp:8000 来自 gordonc 在 Mounir 的答案中的评论中使用指定端口检查了进程,然后在这个答案中使用命令杀死它。之后可以在 python 中运行服务器而不会出现问题。【参考方案5】:

我们不使用这个命令 sudo lsof -t -i tcp:8000 | xargs kill -9 因为它关闭了所有选项卡...你应该使用

ps -ef | grep 蟒蛇

kill -9 process_id

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

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

【讨论】:

【参考方案6】:
>> ps aux | grep manage

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

>> kill -9 3438

【讨论】:

虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!【参考方案7】:

默认情况下,runserver 命令在内部 IP 的 8000 端口上启动开发服务器。

如果您想更改服务器的端口,请将其作为命令行参数传递。例如,此命令在端口 8080 上启动服务器:

python manage.py runserver 8080

【讨论】:

@StephenRauch,这个问题没有问谁在使用这个端口。问题是说明抛出了一个错误。这是有关如何修复该错误的解决方案。 OP 询问如何在端口 8000 上重新启动服务器,而不是要求在另一个端口上运行它【参考方案8】:

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

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

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

【讨论】:

【参考方案9】:

Ctrl-C 之后键入“fg”作为命令。 命令: Fg 将显示哪个在后台运行。之后 Ctrl-C 将停止它。

fg ctl-c

【讨论】:

这真的很有帮助,谢谢!【参考方案10】:

如果你在 mac 中遇到这个问题,你只需要打开活动监视器并强制 python 然后再试一次

【讨论】:

【参考方案11】:
lsof -t -i tcp:8000 | xargs kill -9

【讨论】:

不要常规推荐kill -9;它只应在绝望的情况下用作最后的手段。【参考方案12】:

很抱歉在旧帖子中发表评论,但它可能对人们有所帮助

只需在终端上输入即可

killall -9 python3

它会杀死你机器上运行的所有 python3 并释放你的所有端口。在 Django 项目中工作时对我有很大帮助。

【讨论】:

这对于可能出于任何其他原因而运行 Python 的任何人来说都是非常笨拙的。 我已经提到it will kill all python3 running on your machine 那些最有可能在没有正确理解的情况下尝试这个的人,如果不进一步阐述,也可能无法理解这一点。【参考方案13】:

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

只需单击VSC终端标题中+号左侧的下拉框,然后选择其他一些shell并检查服务器是否已经在那里运行。退出该服务器,您就可以启动另一台服务器了。

【讨论】:

【参考方案14】:

单击屏幕截图中的箭头并找到已运行 Django 服务器的 bash。您收到消息是因为您的服务器已经在运行,并且您尝试再次启动服务器。

【讨论】:

【参考方案15】:

不要使用 CTRL + Z 停止服务器,使用 CTRL + C 停止服务器,我在我的 linux (fedora) 中也遇到过同样的问题,我曾经使用 CTRL + Z 停止服务器,我曾经使用 sudo fuser -k 8000/tcp 命令杀死服务器,该命令运行良好。但后来当我开始使用 CTRL + C 时,我再也没有遇到那个端口运行问题了。

【讨论】:

以上是关于Django 服务器错误:端口已在使用中的主要内容,如果未能解决你的问题,请参考以下文章

Grails 项目运行错误 - 服务器无法为端口 8080 启动:地址已在使用中:JVM_Bind

Tomcat 服务器在 localhost 所需的几个端口(8005、8080、8009)已在使用中

Tomcat v6.0 Server @ localhost 所需的几个端口(8080, 8009)已在使用中。服务器可能已在另一个进程中运行,或者某个系统进程可能正在使用该端口。

Python OSError:[Errno 98] 地址已在使用但未使用端口

端口 8080 已在使用中,并且没有列出使用 8080 的进程

本地主机服务器拒绝连接