单进程的 django web 对于同一个 api 的多个请求,是单线程的顺序执行还是多线程的并发执行? 对于不同 api 的多个请求,是单线程的顺序执行还是多线程的并发执行?
1
zhuangzhuang1988 2016-07-27 20:14:07 +08:00
熟读 wsgi 协议先...
|
2
boyhailong 2016-07-27 22:43:26 +08:00
不同 API ? 是不同的请求吗?
|
3
peter999 2016-07-27 23:08:03 +08:00
多线程并发的, chrom 浏览器你开多个标签访问一个 url 会被顺序执行,这是 chrom 的问题,别的浏览器无此问题
|
4
lovepython 2016-07-28 10:08:41 +08:00 2
每一个请求就是一个连接,对应后面一个线程或进程。
你得理解 wsgi 协议,常规实现 wsgi 都是多进程加多线程。 也就是一个请求进来, wsgi 接受这个请求分给一个线程,然后交给 django 的 view 去处理, view 里自然是顺序处理的。 django 是单线程的顺序执行还是多线程的并发执行? 这句话有问题的, django 只是逻辑框架,不是接受请求的服务器,没有接受请求的服务器, django 没鸟用,对于进来的请求是由 wsgi 分配的,他说让一个 django 执行,就一个,也可以让每个进来的请求对应一个 django 执行。 所以他可以是单线程的顺序执行,也可以是并发执行。 现实环境中,单线程顺序执行没啥意义,一次来这么多请求,一次处理一个,那么后面的怎么办,不就卡死了 所以是并发执行的。 |
5
myyou OP @lovepython 谢谢解答
|