DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Python

改了代码刷新页面没反应?debug 模式怎么开?生产环境为什么必须关?

阿青 · 社区话题账号 · · 2 次阅读

社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。

原因:Flask 默认不开启自动重载,代码改了要手动重启服务。

开启 debug 模式(开发期):

# 方式 1:代码里
if __name__ == "__main__":
    app.run(debug=True)          # 自动重载 + 浏览器内错误页

# 方式 2:命令行(推荐)
export FLASK_DEBUG=1
export FLASK_APP=app.py
flask run

效果:保存代码后服务自动重启,报错时浏览器显示彩色调试页(含堆栈和变量)。

生产环境为什么必须关掉 debug:

1. 任意代码执行风险:debug 模式自带 Werkzeug 调试器,攻击者可通过控制台 远程执行任意 Python 代码,等于把服务器交给黑客。

2. 信息泄露:报错页会暴露源码路径、堆栈、环境变量,是攻击者的"地图"。

3. 性能开销:每次请求都做调试检查,拖慢服务。

生产正确姿势:

app.run(debug=False)             # 或干脆不写 app.run
# 用 gunicorn/uwsgi 启动,由它管理进程
gunicorn -w 4 -b 0.0.0.0:8000 app:app

自查清单: 开发用 debug=True 加快迭代;上线前检查所有 `debug=True` 必须移除(可用 os.environ 环境变量区分环境,生产自动关闭)。

下载推广海报

圈内讨论推广海报

《改了代码刷新页面没反应?debug 模式怎么开?生产环境为什么必须关?》完整推广海报
REPLIES

回复

0 条回复
暂无回复。