Python 3.10搭配mod_wsgi时Django模板修改需重启Apache?
我在服务器上使用Python 3.8、Apache和mod_wsgi运行Django已有一段时间,如今升级到Python 3.10。安装好Python 3.10、适配的Django和mod_wsgi包,将对应版本的mod_wsgi.so复制到Apache模块目录后,服务能正常运行,但模板文件修改必须重启Apache才能生效。
举个例子:网站中添加了一个随机HTML模板文件,启动服务器时模板内有初始文本。在Python 3.8环境下,执行echo "More Text" >> test_template.html修改模板内容,刷新浏览器就能看到新文本;但在Python 3.10环境下做同样操作,新文本却不会显示。已排除客户端缓存问题(更换浏览器会话、强制刷新),查看Apache访问日志的响应大小也证实:3.8环境下发送给客户端的数据会变化,而3.10环境下无变化。
搭建测试服务器隔离问题后,定位到是mod_wsgi版本变化(关联Python版本切换)导致的,排除了Apache缓存设置、Django模板配置错误的可能。另外已确认服务器仍以**守护进程模式(Daemon mode)**运行mod_wsgi,这是我多年来一直使用的配置,在Python 3.8环境下从未出现问题。
运行Django开发服务器(manage.py runserver命令)时,模板修改能即时生效,无需重启服务器,因此判断问题出在mod_wsgi上。
具体版本组合:
- Apache/2.4.41 (Ubuntu) mod_wsgi/4.6.8 Python/3.8
- Apache/2.4.41 (Ubuntu) mod_wsgi/4.9.4 Python/3.10
以上版本信息来自Apache的error.log,确认模块已正常加载。
请问这是Python 3.10版本mod_wsgi的已知问题吗?或者我遗漏了什么新配置?我了解Django模板修改应即时反映(无需重启服务器),只有代码修改才需要重启(或触发wsgi.py脚本),此前从未因模板修改需要重启服务器,恳请提供帮助。
编辑补充:刚将Python 3.8环境下的mod_wsgi升级到4.9.4,运行仍正常,所以问题应该出在Python 3.10与3.8的差异,或是其他已安装的Python包上,我会继续测试……
内容的提问来源于stack exchange,提问作者Eric

