当前位置: 首页 > 面试题库 >

尝试运行Flask应用会显示“地址已在使用中”

逑何平
2023-03-14
问题内容

我最近更新了我的应用程序并尝试运行它,并收到有关“地址已在使用中”的以下错误。这是什么意思,我该如何解决?

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)))

但是无论如何,我想你想知道是不是哪个程序正在使用该部分。你可以使用nmapnetcatGNU程序进行检查。

这是netcat方法(从这里开始):

$ sudo netstat -nlp | grep 8080
tcp  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>


 类似资料:
  • 我正在用出色的webdriver框架构建一个应用程序。首先,我想指出,我对Java非常陌生。开始学习它大约3-4天前,认为它是伟大的使用到目前为止!我正在使用IntelliJ(我使用PyCharm,所以对我来说这是一个明显的选择) 不管怎么说,问题就在这里。我已经开始编写我的代码,并且一切都很顺利,然后我决定我可能应该从GUI开始。所以我在IntelliJ中创建了一个新的JavaFX应用程序,添加

  • 问题内容: 我一直在为我的应用程序使用nginx / gunicorn和Flask开发新的开发平台。 运维方面,一切正常-我遇到的问题是调试Flask层。当我的代码中有错误时,我只是直接向浏览器返回了500错误,而控制台或日志中没有任何显示。 我已经尝试了许多不同的配置/选项。我想我肯定缺少明显的东西。 我的gunicorn.conf: 乏味的一些Flask代码示例-testserver.py:

  • 我有一个现有的Flask应用程序,我想有一个到另一个应用程序的路径。更具体地说,第二个应用程序是一个绘声绘色的短跑应用程序。如何在现有Flask应用程序中运行Dash应用程序? 我还尝试添加一个路由到Dash实例,因为它是一个Flask应用程序,但我得到了错误:

  • 问题内容: 运行webdriver时,运行3分钟后,出现以下异常,导致Webdriver崩溃。 我仅使用一个webdriver实例和一个FirefoxDriver配置文件。 问题答案: 您的出站端口已用完。这意味着您在两分钟之内执行了数千个出站连接。解决方案:使用连接池,或降低程序速度。

  • 我试图在Ubuntu 12.04中运行以下命令 并得到以下错误 在检查8080端口时,输出是 我的问题 为什么我会犯错误,以及如何消除这个错误?

  • 我在启动spring应用程序时出错: