首页 > 解决方案 > OSError:[Errno 48] 地址已在使用中

问题描述

我正在尝试从 Mac 终端设置服务器。

我已经在端口 5000 上建立了连接,并希望5002使用以下命令打开另一个端口:

python Blockchain.py -p 5002

但这给出了错误:

OSError:[Errno 48] 地址已在使用中

我试图验证端口 5002 是否已打开并正在侦听。所以我运行 shell 命令lsof -i:5002但它没有返回。

堆栈跟踪

错误日志和堆栈跟踪附在下面:

Traceback (most recent call last):
 File "Blockchain.py", line 290, in <module>
    app.run(host='0.0.0.0', port=5000)
  File "/anaconda/envs/blockchain/lib/python3.6/site-packages/flask/app.py", line 841, in run
    run_simple(host, port, self, **options)
  File "/anaconda/envs/blockchain/lib/python3.6/site-packages/werkzeug/serving.py", line 814, in run_simple
    inner()
  File "/anaconda/envs/blockchain/lib/python3.6/site-packages/werkzeug/serving.py", line 774, in inner
    fd=fd)
  File "/anaconda/envs/blockchain/lib/python3.6/site-packages/werkzeug/serving.py", line 666, in make_server
    passthrough_errors, ssl_context, fd=fd)
  File "/anaconda/envs/blockchain/lib/python3.6/site-packages/werkzeug/serving.py", line 577, in __init__
    self.address_family), handler)
  File "/anaconda/envs/blockchain/lib/python3.6/socketserver.py", line 453, in __init__
    self.server_bind()
  File "/anaconda/envs/blockchain/lib/python3.6/http/server.py", line 136, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "/anaconda/envs/blockchain/lib/python3.6/socketserver.py", line 467, in server_bind
    self.socket.bind(self.server_address)
OSError: [Errno 48] Address already in use

研究

我在同一个问题上提到了各种答案:

我试过的

另外,我尝试了以下方法来解决问题:

  1. 重启终端
  2. 重新启动 PyCharm
  3. 在不同的套接字上运行(给出相同的错误)。

这些似乎都不起作用。我对 Python 还很陌生。

任何帮助表示赞赏。

标签: pythonsocketsflask

解决方案


在尝试实现DeepSpace 建议的答案时,我偶然发现了以下答案:

Python - 如何从同一台客户端机器运行多个烧瓶应用程序

要在不同的机器上运行 Flask 应用程序,请使用:

export FLASK_APP=Blockchain.py
flask run --host 0.0.0.0 --port 5000

接下来,打开另一个终端并使用:

export FLASK_APP=Blockchain.py
flask run --host 0.0.0.0 --port 5001

致谢:用户metmirr


推荐阅读