我最近更新了我的应用并尝试运行它,并收到以下有关“地址已在使用中”的错误。这是什么意思,我该如何解决?
A B C
0 foo 2 2
1 foo 4 2
2 foo 4 2
3 foo 2 2
4 bar 5 1
5 bar 4 1
6 bar 3 1
7 bar 2 1
答案 0 :(得分:9)
这意味着有另一个服务正在使用该端口(在这种情况下为Set oFind = Cells.Find("dummy", , , xlWhole)
)。也许是因为你忘了关闭另一个正在运行的Flask应用程序而且它正在使用8080
端口。
但是,您可以更改正在使用的端口,例如将其更改为8080
,如下所示:
4444
但无论如何,我想你想知道哪个程序正在使用那个部分,如果它不是你的程序。您可以使用nmap
或netcat
GNU程序进行检查。
以下是if __name__=="__main__":
app.run(host=os.getenv('IP', '0.0.0.0'),
port=int(os.getenv('PORT', 4444)))
方式(from here):
netcat
当你得到它时,我建议手动停止它(例如,如果它是$ sudo netstat -nlp | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 125004/nginx
或其他HTTP服务器,然后通过nginx
命令或service
停止它,如果你是使用systemd Linux)
你也可以通过命令systemctl
杀死它:
kill
您也可以通过kill <pid>
或killall
将其删除,它使用进程名称而不是它的pid:
pkill
答案 1 :(得分:3)
尝试使用此命令杀死服务器上正在运行的所有其他进程
sudo热熔器-k xxxx / tcp
用您的端口名替换xxxx
答案 2 :(得分:3)
我有同样的问题。
我列出了所有使用命令运行的应用程序
sudo lsof -i -P -n | grep LISTEN
还有另一个使用相同端口的应用程序。
停止其他应用程序后,可以启动Flask应用程序。
答案 3 :(得分:2)
您只需使用run函数的host和port参数来设置另一个主机和端口。以便您可以测试应用程序。
if __name__=="__main__":
app.run(host='127.0.0.9',port=4455,debug=True)
答案 4 :(得分:0)
您可以使用以下命令获取所有正在运行的具有python关键字的进程的pid:
ps -fA | grep python
获取pid后使用kill命令如下:
kill -9 pid
运行上面两个命令后,现在运行烧瓶应用程序,它将正常工作
答案 5 :(得分:0)
尝试重新启动终端/外壳程序或用于运行python的任何平台。它对我有用。
答案 6 :(得分:0)
这将杀死端口 8080
上的所有进程
kill -9 $(lsof -t -i:"8080")
如果您使用 Ctrl+Z
只是停止进程(暂停)而不是 Ctrl+C
来停止进程,您可能会以 open port
结束。