Django3.2配置atomic(durable=True) runserver正常gunicorn报错如何解决
问题原因
durable是Django 3.2版本才新增的atomic装饰器参数,低于3.2的Django版本不支持该参数。- 本地执行
python manage.py runserver运行正常,说明你开发所用的Python环境中安装的Django版本符合要求;gunicorn启动报错,本质是 gunicorn运行时调用的Python解释器对应的环境中,安装的Django版本低于3.2,常见触发场景包括:- gunicorn安装在系统全局环境,默认关联的全局Python环境中Django版本低于3.2
- 项目使用了虚拟环境,但你没有在虚拟环境内安装gunicorn,启动时调用了其他环境的gunicorn,关联的依赖版本不对
- 部署环境存在多个Python版本,gunicorn绑定的Python版本和项目开发所用版本不一致
解决方案
要保留durable参数,只需要保证gunicorn运行时调用的Python环境中Django版本≥3.2即可,操作步骤如下:
- 激活项目对应的虚拟环境(无虚拟环境可跳过该步)
- 在当前项目环境内重新安装gunicorn:
pip install gunicorn - 验证当前环境的Django版本,确认输出≥3.2:
python -m django --version - 保持虚拟环境激活状态,执行原有gunicorn启动命令即可正常运行:
gunicorn --bind :8000 --workers 3 myapp.wsgi:application
如果是服务器部署场景,也可以直接指定虚拟环境内的gunicorn可执行文件路径启动,避免环境调用错误,示例如下(替换为你自己的虚拟环境路径):
/path/to/your/project/venv/bin/gunicorn --bind :8000 --workers 3 myapp.wsgi:application
内容的提问来源于stack exchange,提问作者Sina
相关产品推荐
相关产品推荐

