cgi,fcgi,wsgi,flup,django,mod_python,mod_wsgi,python与apache之间的关系、区别

mod_python 已经是被淘汰的技术
将解释器作为 web server 的一个模块,那是由於历史原因,一个本身没有 standalone 解释器的语言(PHP)不得已而为之的方式,将一个语言解释器作为 web server 模块,在效率和安全上都有隐患

mod_wsgi 就是 apache 专用的 module
WSGI 另外还有不少实现
如 flup 就提供了 fastcgi 的 bridge,这样那些没有内建支持 WSGI 或 WSGI 模块的 web server,但支持 fastcgi 的(如 lighttpd),就可以使用
还有些类似 cherry py, twisted.web,gunicorn 等,一般就作为 web app 专用 server,外面再用高并发的通用 server,如 nginx 做反向代理,static files,甚至 load balancing

django 支持 wsgi 的意思就是官方提供使用 wsgi 方式 deploy 你的 web app

需要wsgi…uwsgi是完全用c写的, 先开几个子进程, 每个把你的python程序运行(载入内存), 然后由C写的部分负责与nginx通信(通过unix socket或者tcp), 接收到的请求调度到某个运行着的python程序里(以wsgi规范), 然后经过web框架跑到你的程序, 再按wsgi规范回传给uwsgi, 再返回nginx

mod_python is dead, so using mod_python probably isn’t a good idea for new projects. Personally, I prefer to use mod_wsgi over CGI (or FastCGI). It’s dead-simple to set up, and much more efficient.

Don’t use CGI. It’s inefficient. Spawning a new process for each request. No thanks

Dont’t spend much time with mod_python

Use mod_wsgi.

If you want to write CGI-like stuff without a framework, use mod_wsgi anyway. The WSGI standard (PEP 333) is essential for creating web applications in an easy, interchangeable, reusable, plug-and-playable way.