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

Django项目Ajax请求超1分钟返回net::ERR_EMPTY_RESPONSE问题求助

嘿,我来帮你搞定这个问题!你碰到的net::ERR_EMPTY_RESPONSE在请求超过1分钟时触发,其实和你前端Ajax设置的超大timeout关系不大——问题大概率出在后端服务或者反向代理的超时限制上,毕竟刚好卡在1分钟这个常见的默认超时阈值。下面是具体的排查和解决方向:

1. 先检查WSGI服务器的超时配置

如果你的Django是用gunicorn或者uwsgi部署的,它们默认的请求超时都是60秒,超过这个时间就会主动终止请求,导致前端收到空响应:

  • Gunicorn:启动时加上--timeout 300参数(比如设为5分钟,单位是秒),覆盖默认的60秒限制。
  • uWSGI:在配置文件里添加harakiri = 300,这个参数就是请求的超时时间,默认同样是60秒。
2. 排查反向代理的超时设置

如果你的Django前面挂了Nginx或者Apache这类反向代理,它们也有自己的响应等待超时:

  • Nginx:在对应的location配置块里调整这两个参数:
    proxy_connect_timeout 300s;  # 连接后端服务器的超时时间
    proxy_read_timeout 300s;      # 等待后端返回响应的超时时间
    
    默认这两个值都是60秒,到点就会断开连接。
  • Apache:在代理配置里加上ProxyTimeout 300,同样把超时设为5分钟(根据你的需求调整)。
3. 浏览器侧的小确认

虽然可能性不大,但可以顺手在浏览器控制台的「Network」标签里查看请求的Timing详情:如果是在「Waiting for response」阶段突然中断,那基本可以确定是后端或代理主动断开的;如果是浏览器主动终止,再考虑调整Ajax的timeout或者检查浏览器的全局超时限制(不过Chrome默认是5分钟,一般不会卡1分钟)。

4. 长请求的更优方案

如果你的业务逻辑确实需要长时间处理(比如大数据计算、文件处理),其实更推荐用异步任务+轮询的方式,避免长时间占用连接:

  • 前端发送请求后,后端立即返回一个唯一的任务ID,然后后台用Celery之类的工具异步处理任务。
  • 前端每隔一段时间用这个任务ID轮询后端,查询任务状态。
  • 任务完成后,后端返回处理结果,前端再进行后续操作。

这样既不会触发各种超时限制,也能提升用户体验(比如可以显示加载进度)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:00:35