Windows11环境下Flask服务已启动但未生成访问链接的解决咨询
问题描述
Windows 11系统下运行Flask应用,终端仅显示服务启动和debug模式开启,但无访问链接、无报错,也看不到代码中设定的打印语句。
终端输出
(venv) PS C:\smartfin_ai> python app.py * Serving Flask app 'app' * Debug mode: on
app.py代码
from flask import Flask from core.routes import routes as main_blueprint from core.config import Config import logging import os from dotenv import load_dotenv # Load environment variables from .env load_dotenv() def create_app(): app = Flask(__name__) # Set configuration from Config class app.config.from_object(Config) # Register Blueprint from routes app.register_blueprint(main_blueprint) # Ensure logs directory exists os.makedirs("logs", exist_ok=True) # Set up basic logging logging.basicConfig( filename="logs/app.log", level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s" ) logging.info("SmartFin AI Flask app initialized.") return app if __name__ == "__main__": app = create_app() app.run(debug=True, host='127.0.0.1', port=5050, use_reloader=False) print("SmartFin AI is running! Visit http://127.0.0.1:5050 in your browser.")
排查解决步骤
定位
create_app函数阻塞点
在create_app函数的return app前添加print("create_app执行完成"),运行后观察是否输出。若没有,逐一排查内部步骤:- 检查
.env文件:确认文件存在、路径正确,内部键值对格式无错误(无多余空格、引号匹配)。 - 验证蓝图注册:检查
core.routes.routes蓝图是否正确定义,导入路径无误,蓝图内部无阻塞代码(如数据库连接初始化卡住)。 - 排查Config类:确认
core.config.Config中的配置项无耗时操作或静默失败的逻辑(如读取外部资源未抛出异常)。
- 检查
调整启动逻辑验证
将print语句移到app.run()之前(app.run()是阻塞调用,正常情况下服务停止后才会执行后续代码),同时临时关闭debug模式测试:if __name__ == "__main__": print("准备创建应用实例...") app = create_app() print("应用实例创建完成,启动服务...") app.run(debug=False, host='127.0.0.1', port=5050, use_reloader=False)运行后根据打印输出定位阻塞阶段。
检查日志文件
查看项目根目录下的logs/app.log,确认是否存在SmartFin AI Flask app initialized.日志。若不存在,说明create_app未执行到日志写入步骤;若存在,问题出在app.run()调用阶段。排查端口占用
打开系统CMD或PowerShell,执行netstat -ano | findstr :5050,查看5050端口是否被其他进程占用。若被占用,修改app.run()的port参数为未使用端口(如5051)。升级Flask版本
执行pip show flask查看当前版本,若版本过旧,运行pip install --upgrade flask升级到稳定版本,部分旧版本Flask在debug模式下的输出逻辑存在差异。切换终端环境测试
避开VSCode终端,直接在系统原生PowerShell或CMD中激活虚拟环境后运行python app.py,排除VSCode终端输出过滤或配置问题。
内容的提问来源于stack exchange,提问作者S.VEDHAPRIYAA

