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

Django(含DRF)是同步框架吗?为何多请求未串行执行?

问题解答

你的猜测方向是对的,但核心原因不是Django框架本身,而是Django运行依赖的Web服务器默认采用了多线程/多进程模式,具体解释如下:

  • Django作为“同步框架”,指的是单个视图函数内部的代码是串行阻塞执行的——比如你的my_view里的time.sleep(10)会占用当前处理该请求的线程/进程,直到任务完成才能返回响应。但这并不意味着整个服务只能处理一个请求。
  • 你使用的默认开发服务器runserver,在默认配置下是支持多线程的(Python 3.7+版本的Django,runserver默认启用多线程)。当你同时发起7个请求时,服务器会分配7个独立的线程分别处理每个请求,每个线程各自执行my_view里的逻辑,所以每个请求都只需要等待自己的10秒休眠时间,最终在10-12秒左右收到响应,而非串行等待70秒。
  • 生产环境中使用的Web服务器(如Gunicorn、uWSGI)更是通过配置worker进程数、线程数来实现并发处理,本质也是通过多进程/多线程来同时响应多个请求。

简单来说:Django的视图是同步阻塞的,但Web服务器通过多worker(进程/线程)实现了并发请求处理,这就是你的实验结果的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:07:08