我最近更新了我的应用程序并尝试运行它,但出现了以下关于“地址已在使用”的错误。这意味着什么?我如何修复它?
Traceback (most recent call last):
File "/home/ubuntu/workspace/app.py", line 11, in <module>
app.run(host = os.getenv('IP', '0.0.0.0'), port=int(os.getenv('PORT',8080)))
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 772, in run
run_simple(host, port, self,**options)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 687, in run_simple
inner()
File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 653, in inner
fd=fd).serve_forever()
File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 557, in make_server
passthrough_errors, ssl_context, fd=fd)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 467, in __init__
HTTPServer.__init__(self, (host, int(port)), handler)
File "/usr/lib/python2.7/SocketServer.py", line 419, in __init__
self.server_bind()
File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind
SocketServer.TCPServer.server_bind(self)
File "/usr/lib/python2.7/SocketServer.py", line 430, in server_bind
self.socket.bind(self.server_address)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
7条答案
按热度按时间72qzrwbm1#
这意味着有另一个服务正在使用该端口(
8080
在这种情况下)。可能是因为你忘了关闭另一个running flask应用程序,它正在使用8080
港口。但是,您可以更改正在使用的端口,例如将其更改为
4444
这样地:但不管怎样,我想如果不是你的程序,你会想知道哪个程序正在使用这个部分。你可以用
nmap
或netcat
gnu程序来检查它。这是我的建议
netcat
路(从这里):当您得到它时,我建议手动停止它(例如,如果它是
nginx
或其他http服务器,然后通过service
命令或systemctl
如果您使用的是systemd(linux)你也可以通过命令杀死它
kill
:你也可以通过
killall
或pkill
,它使用进程名称而不是pid:fjnneemd2#
尝试使用此命令终止服务器上运行的所有其他进程
sudo定影器-k x/tcp
将x替换为您的端口名
zpjtge223#
您可以使用以下命令获取具有python关键字的所有运行进程的pid:
ps-fa | grep python
获取pid的use kill命令后,如下所示:
杀死-9 pid
运行以上两个命令后,现在运行flask应用程序,它将正常工作
bf1o4zei4#
您只需使用run函数的host和port参数设置另一个主机和端口,就可以测试您的应用程序。
vtwuwzda5#
我也有同样的问题。
我列出了使用该命令运行的所有应用程序
还有另一个应用程序使用相同的端口。
在我停止另一个应用程序后,我可以启动我的 flask 应用程序。
o2rvlv0m6#
尝试重新启动terminal/shell或运行python所使用的任何平台。这对我有用。
g6ll5ycj7#
这将终止端口上的所有进程
8080
```kill -9 $(lsof -t -i:"8080")