【发布时间】:2022-01-13 02:38:25
【问题描述】:
我一直在关注this article,试图从头开始创建我的第一个 Flask API。我不得不在工作中更新我的电脑,我认为我没有事先成功关闭终端。
当我现在尝试从项目的主目录运行我的应用程序时,在标题为“使用 Flask 创建 RESTful 端点”的部分中,我得到了一个长长的堆栈跟踪,并以此结尾:
File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/socketserver.py", line 466, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 48] Address already in use
其他类似的问题表明这是由于另一个进程使用了我尝试访问的端口。为了解决这个问题,我使用了以下命令:
ps -fA | grep python
返回:
501 12797 12759 0 11:15PM ?? 0:03.97 /Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Renderer).app/Contents/MacOS/Code Helper (Renderer) --ms-enable-electron-run-as-node /Users/nfeldman1995/.vscode/extensions/ms-python.vscode-pylance-2021.12.0/dist/server.bundle.js --cancellationReceive=file:50e28be741e040fa2f7efc8dbdcf8a4ca200512639 --node-ipc --clientProcessId=12759
501 13126 12421 0 11:30PM ttys000 0:00.00 grep python
这让我感到很困惑。其他文章表明我应该看到一行输出如下:
502 89332 12877 0 3:40PM ttys00 0:00.15 python -m SimpleHTTPServer
但是,此输出中似乎没有运行“SimpleHTTPServer”,所以我不知道要杀死哪个进程。我尝试使用命令 kill <process#> 杀死其他两个任务,但这并没有解决问题。
转到 localhost:5000(我尝试定位的端口)给我一个 404 错误。
更新:这是 lsof -i :5000 的输出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ControlCe 13218 nfeldman1995 27u IPv4 0xdf2d97d6ad526f5 0t0 TCP *:commplex-main (LISTEN)
ControlCe 13218 nfeldman1995 28u IPv6 0xdf2d97d52942a1d 0t0 TCP *:commplex-main (LISTEN)
我尝试运行kill -9 13218 并再次运行我的应用程序并得到同样的错误。运行 lsof,然后终止进程(或者我认为),然后再次运行 lsof 似乎表明新进程不断被创建。 (使用不同的进程 ID 号)。
这是我的 bootstrap.sh 文件,应 Jon 的要求:
#!/bin/sh
export FLASK_APP=./cashman/index.py
source $(pipenv --venv)/bin/activate
flask run -h 0.0.0.0
【问题讨论】: