请问django异步请求非阻塞实现原理是怎样的,django异步,学习tornado时,发
请问django异步请求非阻塞实现原理是怎样的,django异步,学习tornado时,发
学习tornado时,发现tornado的异步请求使用tornado.gen或者callback实现。做实验两个请求,一个sleep上5秒,一个立即返回。先请求sleep,再请求立即返回的。 发现django并没有做什么处理。同样可以在第一个请求sleep时,不影响第二个立即返回的请求。请问下django是怎么处理的。
Django就没有用异步,通过线程来实现并发,这也是WSGI普遍的做法,跟tornado不是一个概念
你应该是使用了Django自己的开发服务器跑的例子,在Django关于manage.py的文档中写道:
--nothreadingThe 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即可。
编橙之家文章,
相关内容
- 正则表达式结合断言使用遇到的HTML问题求指点,正则表
- php程序员学Python爬虫,看什么书好?,python爬虫,有1年ph
- pydev启动python程序和直接命令行启动有什么区别,pyde
- Python flask框架启动脚本被执行次数问题,pythonflask,我的
- 求pyrhin tkinter写界面实现缩小到桌面右下角的思路,p
- Python实例创建传入参数机制问题,python实例参数机制
- 豆瓣pypi package更新方式是什么,pypipackage,在官方的pyp
- python两种获取对象方法有何不同,python有何不同,如果我
- python如何将多个包或第三方库打包为一个包,python一个
- 需要把含有元组元素的列表转换为dict用什么方法,元素
评论关闭