You need to enable JavaScript to run this app. 如何避免Flask开发服务器监测非项目文件导致的异常自动重载
优惠活动
大模型
产品
解决方案
定价
更多

如何避免Flask开发服务器监测非项目文件导致的异常自动重载

解决Flask调试模式误监测第三方包文件频繁重载的方案

你遇到的问题是Flask 1.1.2依赖的Werkzeug 1.0.1版本内置重载器的默认逻辑导致的:该版本重载器会默认监测所有被项目导入的模块文件,包括site-packages目录下的第三方包,当第三方包有缓存写入、后台文件变更时就会触发误重载。

方法1:代码内配置重载器排除规则(推荐,无需升级依赖)

在你的main.py启动代码中添加重载器排除规则,直接忽略所有site-packages目录下的文件变更,修改后代码如下:

import os
from flask import Flask

app = Flask(__name__)

if __name__ == '__main__':
    app.run(
        debug=True,
        port=7000,
        # 配置重载器排除规则
        reloader_excludes=[
            # 通配符匹配所有site-packages目录下的文件
            "*/site-packages/*"
        ]
    )

如果上述参数不生效,可以在代码最开头提前设置Werkzeug的环境变量:

import os
# 全局设置重载器排除site-packages路径,需放在导入flask之前
os.environ["WERKZEUG_RUN_RELOADER_EXCLUDES"] = "*/site-packages/*"
from flask import Flask

# 后续代码保持不变
app = Flask(__name__)
if __name__ == '__main__':
    app.run(debug=True, port=7000)

方法2:更换重载器类型

你当前使用的windowsapi reloader在部分Windows环境下会出现文件变更误判问题,可以手动指定使用stat类型重载器:

if __name__ == '__main__':
    app.run(
        debug=True,
        port=7000,
        reloader_type='stat'
    )

方法3:升级Flask和Werkzeug版本

2.0及以上版本的Flask已经优化了重载逻辑,默认不会监测site-packages目录下的第三方包文件,你可以执行以下命令升级到兼容Python3.9的稳定版本:

pip install -U flask==2.0.3 werkzeug==2.0.3

升级完成后无需修改原有启动代码即可生效。

临时验证方案

如果不想修改代码,可以在启动应用前先在cmd窗口执行环境变量设置命令:

set WERKZEUG_RUN_RELOADER_EXCLUDES=*/site-packages/*
py main.py

该配置仅在当前cmd窗口生效,关闭窗口后配置失效。


内容的提问来源于stack exchange,提问作者Parvat R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 12:54:08