Django请求生命周期
流程:
橙色箭头:浏览器向后端发送请求,先到web服务网关接口,里面有一个wsgiref模块,该模块是django自带的,自身能够承受的并发量非常小,大概只有一千左右,上线之后通常会谎称uwsgi,而且在他前面还会加上nginx做反向代理来提高网站的并发量。接下来就走到了urls.py,路由与视图函数分发的,再到views.py,这里面放的是后端业务逻辑的代码,再到模板里面拿模板,到models里面拿数据,models的数据就是数据库里拿出来的了。templates里面存放的是前端代码。models里面存放的是类。
黑色小框:django的中间件,相当于是一个保安,所有请求进来都要先经过他,ok了,就进去,返回数据的时候也要经过这个中间件,格式符合才可以过去。
绿色箭头:当浏览器想要获取数据的时候,经过网关接口,在经过保安,保安不会马上让他进入urls,而是先会去缓存数据库里找有没有他要的,有的话直接返回出去,这样能够节省后端服务器资源,如果没有的话,在走后面的流程,回来的时候,经过保安,往浏览器丢一份,往缓存数据库丢一份。下次来请求相同数据的时候,可以直接返回给浏览器。
wsgiref和uwsgi跟WSGI是什么关系?
WSGI类似于一种协议,一种规定,wsgiref和uwsgi是基于这个协议所写的功能,都是用来实现该协议的功能模块。