Jupyter Notebook中Flask服务同端口重启失效问题咨询
Flask端口重复使用失效的原因与解决办法
原因
- Jupyter Notebook的运行环境和普通终端不同,Ctrl+C在这里无法正确向Flask进程发送终止信号,导致进程没有完全退出,只是被挂在后台。
- 点击中断内核按钮只能终止Jupyter的内核进程,但之前启动的Flask服务已经脱离了内核的控制,成为独立的后台进程,持续占用着2000端口。
- 再次尝试用同一端口启动Flask时,系统会因为端口已被占用而拒绝新服务的绑定请求,新服务无法正常启动,因此页面会持续加载失效;更换端口后,新服务能顺利绑定未被占用的端口,所以恢复正常。
解决办法
- 手动清理占用端口的进程
- Windows系统:打开命令提示符,先执行命令找到占用端口的进程PID:
再用找到的PID强制终止进程:netstat -ano | findstr :2000taskkill /PID <查询到的PID数字> /F - macOS/Linux系统:打开终端,先执行命令定位进程:
再杀掉对应进程:lsof -i :2000kill -9 <查询到的PID数字>
- Windows系统:打开命令提示符,先执行命令找到占用端口的进程PID:
- 更换运行环境启动Flask
避免在Jupyter Notebook中直接运行Flask服务,改用普通终端/命令行窗口启动,这样Ctrl+C能更可靠地终止服务,不会留下残留进程。
内容的提问来源于stack exchange,提问作者Eyad Essa
相关产品推荐
相关产品推荐

