Python 尝试运行Flask应用程序会给出“0”;“地址已在使用中”;

Python 尝试运行Flask应用程序会给出“0”;“地址已在使用中”;,python,flask,Python,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/l

我最近更新了我的应用程序并尝试运行它,但出现了以下关于“地址已在使用”的错误。这意味着什么?我如何修复它

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
回溯(最近一次呼叫最后一次):
文件“/home/ubuntu/workspace/app.py”,第11行,在
app.run(host=os.getenv('IP','0.0.0'),port=int(os.getenv('port',8080)))
文件“/usr/local/lib/python2.7/dist packages/flask/app.py”,第772行,运行中
运行简单(主机、端口、自身,**选项)
文件“/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py”,第687行,以简单方式运行
内()
文件“/usr/local/lib/python2.7/dist-packages/werkzeug/service.py”,第653行,内部
fd=fd)。永远为你服务()
文件“/usr/local/lib/python2.7/dist packages/werkzeug/service.py”,第557行,在make_服务器中
传递错误,ssl上下文,fd=fd)
文件“/usr/local/lib/python2.7/dist packages/werkzeug/service.py”,第467行,在__
HTTPServer.\uuuu init\uuuu(self,(主机,int(端口)),处理程序)
文件“/usr/lib/python2.7/SocketServer.py”,第419行,在__
self.server_bind()
文件“/usr/lib/python2.7/BaseHTTPServer.py”,第108行,在服务器绑定中
SocketServer.TCPServer.server\u绑定(self)
服务器绑定中的文件“/usr/lib/python2.7/SocketServer.py”,第430行
self.socket.bind(self.server\u地址)
文件“/usr/lib/python2.7/socket.py”,第224行,meth格式
返回getattr(self.\u sock,name)(*args)
socket.error:[Errno 98]地址已在使用中

这意味着另一个服务正在使用该端口(
8080
)。可能是因为您忘记关闭另一个正在运行的Flask应用程序,而它正在使用
8080
端口

但是,您可以更改正在使用的端口,例如将其更改为
4444
,如下所示:

if __name__=="__main__":
    app.run(host=os.getenv('IP', '0.0.0.0'), 
            port=int(os.getenv('PORT', 4444)))
但不管怎样,我想如果不是你的程序,你会想知道哪个程序正在使用这个部分。您可以使用或GNU程序来检查它

下面是netcat的
way():

当您得到它时,我建议手动停止它(例如,如果它是
nginx
或其他HTTP服务器,则通过
service
命令或
systemctl
停止它,如果您使用的是systemd Linux)

您还可以通过命令
kill
杀死它:

kill <pid>

您可以使用以下命令获取具有python关键字的所有运行进程的pid:

ps-fA | grep python

获取pid的use kill命令后,如下所示:

杀死-9 pid


在运行上述两个命令后,现在运行flask应用程序,它将正常运行

尝试使用此命令终止服务器上运行的所有其他进程

sudo定影器-k xxxx/tcp


将xxxx替换为您的端口名

您只需使用run函数的host和port参数设置另一个主机和端口,即可测试您的应用程序

如果名称=“\uuuuu main\uuuuuuuu”:
app.run(host='127.0.0.9',port=4455,debug=True)
我也有同样的问题

我列出了使用该命令运行的所有应用程序

sudo lsof -i -P -n | grep LISTEN
还有另一个应用程序使用相同的端口


停止另一个应用程序后,我可以启动Flask应用程序。

尝试重新启动terminal/shell或运行python所使用的任何平台。它对我有效。

这将终止端口8080上的所有进程 杀戮-9美元(lsof-t-i:“8080”)


如果您使用Ctrl+Z而不是Ctrl+C来停止进程(暂停),则可能会导致一个打开的端口。

这意味着另一个服务正在使用该端口(
8080
)。可能是因为您忘了关闭另一个正在运行的Flask应用程序,它正在使用
8080
端口。@KevinGuan但我只部署了一个Flask应用程序:/address已在使用,这意味着服务器无法启动,因为另一台服务器在该端口上运行。检查您的程序是否已经运行,如果已经运行,请终止它。您还可以在windows系统上使用tcpview查看活动的tcp服务器。@user119264:您可以使用
nmap
netcat
检查哪个程序正在使用该端口。这里还有一个问题,公认的答案是使用
netcat
,检查它:将其更改为app.run(host=os.getenv('IP',0.0.0'),port=int(os.getenv('port',5000)))哇,谢谢你的帮助!很抱歉再次打扰您,但上面写着“TemplateNotFound”,但index.html就在我的目录中,正如您在图片中看到的:/这很好,它甚至找到了对LSOF不可见的那些。在这种情况下,我在Windows上可以做什么?我不确定这是否回答了最初的问题?
killall/pkill <process name>
sudo lsof -i -P -n | grep LISTEN