Django生产环境不显示新变更,已尝试多操作仍无效,如何排查?
调试步骤
确认.env文件加载路径
- 检查uwsgi的
admin.ini配置,确认env项或代码中读取.env的路径是否为绝对路径,避免加载了其他位置的旧文件。可以临时在Django视图中添加代码打印.env的实际读取路径:import os print(os.path.abspath('.env')) # 部署后查看uwsgi日志获取输出 - 验证.env文件的权限,确保uwsgi运行用户(如www-data)有读取权限:
ls -l /path/to/your/.env
- 检查uwsgi的
验证uwsgi进程是否真正加载新代码
- 用
ps aux | grep uwsgi查看进程PID,确认重启后PID是否更新,若未更新说明重启未生效,尝试强制启停:sudo systemctl stop uwsgi sudo systemctl start uwsgi - 检查uwsgi运行用户与文件所属用户是否一致,避免因权限问题无法读取修改后的文件:
ps aux | grep uwsgi查看用户,ls -l /path/to/your/media/models.py查看文件所有者
- 用
同步Django迁移与虚拟环境配置
- 线上环境需同步执行models变更的迁移命令(确保在项目虚拟环境中执行):
python manage.py makemigrations media python manage.py migrate - 检查
admin.ini中的pythonpath和home配置,确认指向正确的项目目录和虚拟环境,避免uwsgi使用系统Python而非项目依赖环境
- 线上环境需同步执行models变更的迁移命令(确保在项目虚拟环境中执行):
清理各类缓存
- 清空Django内置缓存:
python manage.py clearcache - 若使用了第三方缓存服务(如Redis、Memcached),手动清空缓存数据
- 客户端强制刷新页面(Ctrl+F5)或使用无痕模式访问,排除浏览器缓存影响
- 清空Django内置缓存:
开启详细日志排查
- 修改
admin.ini开启uwsgi debug日志:
重启uwsgi后访问页面,查看日志中是否有.env加载、models初始化的相关信息logto = /var/log/uwsgi/debug.log log-level = debug - 检查Django应用日志(如
/var/log/django/app.log),排查是否存在未被捕获的警告或隐性错误
- 修改
内容的提问来源于stack exchange,提问作者user892134
相关产品推荐
相关产品推荐

