重新启动Django服务器会出现以下错误:

this port is already running....

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


当前回答

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应用程序。

其他回答

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

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应用程序。

这是对穆尼尔答案的扩展。我已经为您添加了一个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

对我来说,这是因为我在Postman中的API请求正在被我的应用程序中的调试器断点拦截…让请求挂起。如果我在关闭应用程序的服务器之前取消了Postman中的请求,错误就不会发生。

所以试着取消你在其他程序中发出的任何打开的请求。

在macOS上,我一直在使用sudo lsof -t -i tcp:8000 | xargs kill -9当我忘记取消打开的http请求,以解决错误=该端口已经在使用中。这也完全关闭了我的邮递员应用程序,这就是为什么我的第一个解决方案更好。

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

Ps -ef | grep python Kill -9 process_id

显示所有带id的grep进程

杀死-9 11633 (11633是进程id到:- /bin/python manage.py runserver)