django 执行多请求的流程是什么?

2016-07-27 19:53:36 +08:00
 myyou

单进程的 django web 对于同一个 api 的多个请求,是单线程的顺序执行还是多线程的并发执行? 对于不同 api 的多个请求,是单线程的顺序执行还是多线程的并发执行?

6779 次点击
所在节点    Python
5 条回复
zhuangzhuang1988
2016-07-27 20:14:07 +08:00
熟读 wsgi 协议先...
boyhailong
2016-07-27 22:43:26 +08:00
不同 API ? 是不同的请求吗?
peter999
2016-07-27 23:08:03 +08:00
多线程并发的, chrom 浏览器你开多个标签访问一个 url 会被顺序执行,这是 chrom 的问题,别的浏览器无此问题
lovepython
2016-07-28 10:08:41 +08:00
每一个请求就是一个连接,对应后面一个线程或进程。

你得理解 wsgi 协议,常规实现 wsgi 都是多进程加多线程。

也就是一个请求进来, wsgi 接受这个请求分给一个线程,然后交给 django 的 view 去处理, view 里自然是顺序处理的。

django 是单线程的顺序执行还是多线程的并发执行?

这句话有问题的, django 只是逻辑框架,不是接受请求的服务器,没有接受请求的服务器, django 没鸟用,对于进来的请求是由 wsgi 分配的,他说让一个 django 执行,就一个,也可以让每个进来的请求对应一个 django 执行。

所以他可以是单线程的顺序执行,也可以是并发执行。
现实环境中,单线程顺序执行没啥意义,一次来这么多请求,一次处理一个,那么后面的怎么办,不就卡死了

所以是并发执行的。
myyou
2016-07-28 10:10:14 +08:00
@lovepython 谢谢解答

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/295327

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX