You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django生产环境域名访问时File字段更新失败及Admin登录异常

Django生产环境域名访问时File/Image字段更新失败+Admin登录异常问题排查与解决

问题现象

  • 生产环境Django应用,用IP+runserver启动时完全正常;
  • 通过域名访问时,无法更新File/Image字段,请求超时,错误日志反复出现:<method 'read' of 'lsapi_wsgi.InputStream' objects> returned NULL without setting an error;
  • PC端无法登录Django Admin后台,仅移动端可以正常登录。

完整错误跟踪信息

SystemError at /admin/accounts/user/1/change/
<method 'read' of 'lsapi_wsgi.InputStream' objects> returned NULL without setting an error
Request Method: POST
Request URL:    https://dev.temarico.com/admin/accounts/user/1/change/
Django Version: 4.1.7
Exception Type: SystemError
Exception Value:    
<method 'read' of 'lsapi_wsgi.InputStream' objects> returned NULL without setting an error
Exception Location: /home/temaricocom/virtualenv/API/Backends/3.8/lib/python3.8/site-packages/django/core/handlers/wsgi.py, line 28, in _read_limited
Raised during:  django.contrib.admin.options.change_view
Python Executable:  /home/temaricocom/virtualenv/API/Backends/3.8/bin/python
Python Version: 3.8.12
Python Path:    
['/home/temaricocom/API/Backends',
 '',
 '/home/temaricocom/API/Backends',
 '/opt/alt/python38/lib64/python38.zip',
 '/opt/alt/python38/lib64/python3.8',
 '/opt/alt/python38/lib64/python3.8/lib-dynload',
 '/home/temaricocom/virtualenv/API/Backends/3.8/lib64/python3.8/site-packages',
 '/home/temaricocom/virtualenv/API/Backends/3.8/lib/python3.8/site-packages']
Server time:    Sun, 19 Mar 2023 09:45:19 +0300

排查与解决思路

1. 针对LiteSpeed LSAPI的输入流异常

这个错误是LiteSpeed服务器的lsapi_wsgi.InputStream对象读取时返回NULL导致的,核心是服务器WSGI配置和Django的兼容性问题:

  • 核对LiteSpeed的Python LSAPI版本和项目Python版本(3.8.12)是否一致,版本不匹配极易引发这类底层异常;
  • 调整LiteSpeed的max_body_size(最大请求体大小)和request_timeout(请求超时时间),尤其是上传图片/文件时,默认限制可能不够;
  • 开启LiteSpeed的Request Body Buffering选项,确保请求体被完整缓冲后再传递给Django处理,避免流读取中断。

2. 修复Django WSGI处理逻辑

Django的wsgi.py中_read_limited方法在处理LSAPI输入流时存在兼容问题,可以尝试:

  • 在项目的wsgi.py中重写WSGIRequest的输入流处理逻辑,捕获NULL返回的情况并做兜底处理;
  • 尝试升级Django到4.2.x稳定版,或降级到4.0.x版本,验证是否是特定版本的兼容bug。

3. 解决Admin PC端登录异常

PC端无法登录、移动端正常,大概率是Cookie或CSRF配置问题:

  • 检查Django配置中的SESSION_COOKIE_DOMAIN和CSRF_COOKIE_DOMAIN,确保域名设置正确,没有针对PC端做特殊限制;
  • 清空PC端浏览器的缓存和Cookie,重新尝试登录,避免旧Cookie干扰;
  • 如果用了反向代理,检查代理配置是否篡改了PC端的请求头(比如User-Agent)或Cookie参数。

4. 替代方案:切换WSGI服务器

如果LiteSpeed的问题难以快速定位,可以临时切换到Gunicorn+Nginx组合验证:

  • 安装Gunicorn:pip install gunicorn;
  • 启动应用:gunicorn --bind 0.0.0.0:8000 your_project.wsgi:application;
  • 配置Nginx反向代理指向Gunicorn的端口,测试域名访问是否恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:13:15