玩蛇网提供最新Python编程技术信息以及Python资源下载!

请问django异步请求非阻塞实现原理是怎样的

学习tornado时,发现tornado的异步请求使用tornado.gen或者callback实现。做实验两个请求,一个sleep上5秒,一个立即返回。先请求sleep,再请求立即返回的。 发现django并没有做什么处理。同样可以在第一个请求sleep时,不影响第二个立即返回的请求。请问下django是怎么处理的。

Django就没有用异步,通过线程来实现并发,这也是WSGI普遍的做法,跟tornado不是一个概念

你应该是使用了Django自己的开发服务器跑的例子,在Django关于manage.py的文档中写道:

--nothreading
The development server is multithreaded by default. Use the --nothreading option to disable the use of threading in the development server.

也就是说,默认情况下你使用./manage.py runserver会开启多个线程对HTTP请求进行伺服,所以第二个请求进来时虽然第一个请求仍在sleep,但已经新开了一个线程进行响应处理,看起来像是“非阻塞”的工作模式,其实质是多线程而非单线程,想禁用这一行为也已经给出了答案,加上--nothreading参数:./manage.py runserver --nothreading即可。

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd18924.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月22日 - 08时56分41秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules