文章内容

2025/9/16 19:39:58,作 者: 黄兵

Flask 更新了模板,部署到服务器,是否需要重启程序

不一定要重启,但建议重启,原因如下:

1. Flask 模板文件的加载机制

  • 开发模式(debug=True)
    Flask 会开启模板自动重载,模板文件修改后会自动生效,无需重启程序。

  • 生产模式(debug=False)
    Flask 默认会缓存模板(Jinja2 会启用 FileSystemLoader 的缓存),模板更新后不会立即生效,除非:

    • 清空 Jinja2 缓存(jinja_env.cache.clear()),或者

    • 重启 WSGI 应用(uWSGI、Gunicorn 等)。

2. 生产环境常用部署方式

如果你用的是 uWSGI + FlaskGunicorn + Flask,通常生产模式都会缓存模板。
因此,更新模板后通常做法是:

  • 优先选择:重启 WSGI 服务(例如 systemctl restart uwsgitouch /path/to/uwsgi.ini 触发 reload)。

  • 替代方案:在代码中调用:

    from flask import current_app
    current_app.jinja_env.cache.clear()
    

    可以手动清空模板缓存,无需重启程序,但要注意加权限保护,避免被滥用。

3. 推荐做法

  • 生产环境:建议重启程序,这样保证模板更新、静态文件缓存、配置变更全部生效。

  • 开发环境:不用重启,Flask 会自动检测变更。

分享到:

发表评论

评论列表