尝试运行Flask应用会显示“地址已在使用中”
我最近更新了我的应用程序并尝试运行它,并收到有关“地址已在使用中”的以下错误。这是什么意思,我该如何解决?
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
回答:
这意味着有另一个服务正在使用该端口(8080在这种情况下)。可能是因为你忘记关闭另一个正在运行的Flask应用程序,并且它正在使用8080端口。
但是,你可以更改正在使用的端口,例如,将其更改为4444如下所示:
if __name__=="__main__": app.run(host=os.getenv('IP', '0.0.0.0'),
port=int(os.getenv('PORT', 4444)))
但是无论如何,我想你想知道是不是哪个程序正在使用该部分。你可以使用nmap
或netcatGNU
程序进行检查。
这是netcat
方法(从这里开始):
$ sudo netstat -nlp | grep 8080tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 125004/nginx
当你获得它时,我建议你手动将其停止(例如nginx
,如果是Windows
服务器或其他HTTP服务器,则通过service
命令停止它,或者systemctl
如果你使用的是系统化Linux)
你也可以通过以下命令将其杀死kill
:
kill <pid>
你也可以通过killall
或杀死它pkill
,它使用进程名而不是pid:
killall/pkill <process name>
以上是 尝试运行Flask应用会显示“地址已在使用中” 的全部内容, 来源链接: utcz.com/qa/423018.html