WSGI、flup、fastcgi、web.py、uwsgi

 

==================        网上别人的理解 ===================python

http://www.douban.com/note/13508388/nginx

一、Apache/lighttpd: 至关于一个request proxy,根据配置,把不一样的请求转发给不一样的server处理,例如静态的文件请求本身处理,这个时候它就像一个web server,对于fastcgi/python这样的请求转发给flup这样的Server/Gateway进行处理

二、flup: 一个用python写的web server,也就是cgi中所谓的Server/Gateway,它负责接受apache/lighttpd转发的请求,并调用你写的程序 (application),并将application处理的结果返回到apache/lighttpd

三、fastcgi: apache/lighttpd的一个模块,虽然flup能够做为一个独立的web server使用,可是对于浏览器请求处理通常都交给 apache/lighttpd处理,而后由apache/lighttpd转发给flup处理,这样就须要一个东西来把apache/lighttpd跟flup联系起来,这个东西就是fastcgi,它经过环境变量以及socket将客户端请求的信息传送给flup并接收flup返回的结果

四、web.py: 应该说有了上面的东西你就能够开始编写你的web程序了,可是问题是你就要本身处理浏览器的输入输出,还有cookie、session、模板等各类各样的问题了,web.py的做用就是帮你把这些工做都作好了,它就是所谓的web framework,另一个出名的是django,不过感受太复杂了,web.py差很少就够用了

五、WSGI : 除了flup Server/Gateway外还有不少其余人的写的Server/Gateway, 这个时候就会出问题了,若是你在flup上写了一个程序,如今因为各类缘由你要使用xdly了,这个时候你的程序也许就要作不少痛苦的修改才能使用 xdly server了,WSGI就是一个规范,他规范了flup这个服务应该怎么写,应该使用什么方式什么参数调用你写的程序(application)等,固然同时也规范你的程序应该怎么写了,这样的话,只要flup跟xdly都遵照WSGI的话,你的程序在两个上面均可以使用了,flup就是一个WSGI serverweb

 

================== 我本身的理解 ================apache

一、wsgi是一种协议,python和webserver通信的协议。django

二、fastcgi是cgi的改进版,是webserver和程序通信的协议,wsgi是在fastcgi的基础上定制化的(wsgi特为python服务)也就是说 nginx + fastcgi + wsgi + python才是完整的流程。其中fastcgi和wsgi都是独立实现的。好比python的flup就是wsgi的一种实现。浏览器

三、fastcgi是一种cgi,是web服务器和应用程序交互的标准,wsgi是在fastcgi的层次之上的东西服务器

四、WSGI是python的接口规范,这个规范是针对WEB服务器和python应用(框架等)的交互的。FASTCGI则是二者底层的通讯协议的规范。 cookie

五、而uwsgi则是集成了fastcgi和wsgi的功能,简化了这一步session

 

=================== uwsgi的部署 ====================app

既然如此貌似uwsgi是最牛逼的,以前用nginx + tornado用到内伤了,此次研究下若是nginx + uwsgi + python 下边单开一个文章写部署

相关文章
相关标签/搜索