导读:本篇文章首席CTO笔记来给大家介绍有关django为什么要uwsgi的相关内容,希望对大家有所帮助,一起来看看吧。
python Django自带wsgi.py 为什么部署还需要uWSGI
Django自己运行的只用于开发者调试,且为单线程工作。如果是要作为产品发布则需要用到其他的服务器部署,比较常见的用Nginx+uwsgi。
django 多线程 + uWSGI 多线程 遇到的坑
当django中使用了多线程时,由于uwsgi默认不开启多线程,所以我们需要为uwsgi手动开启多线程。
闲言少叙,直接上配置。
在uwsgi 的配准文件 uwsgi.ini 中 增加下面的 threads 字段
这样就可开启多线程。
django部署的一个爬虫服务。客户端发送一个请求后,django立即开启一个线程,去执行耗时的爬虫任务, django不等待爬虫结果,便先返回给客户端“请等待”的提示,在爬虫任务执行完毕后,再通过轮询或websocket返回给客户端爬虫任务的结果。
使用 django的 runserver 运行项目没问题,但当使用 nginx+ uwsgi 运行项目时,爬虫的HTTP请求不返回结果;当使用 uwsgi单独拉起项目时,爬虫的HTTP返回结果但速度奇慢。
最后发现是uwsgi 默认不支持多线程,需要开启多线程(方法如上),即可解决问题。
部署flask应用时,为什么会需要gunicorn/uWSGI
Flask ,Django 自带的web server的目的就是用于开发,而不是生产环境。他们俩本身是web framework而不是web
server. 他们自带的server应该都只能开单进程。而像gunicorn是
prefork模式,从nginx每发过来一个请求,它就fork一个进程去处理这个请求,并buffer相关的数据。wsgi服务器都是专门为生产环境
开发的,能配置更多从而处理更复杂的请求状况,从性能和稳定性来说,都更好。
结语:以上就是首席CTO笔记为大家整理的关于django为什么要uwsgi的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~