部署应用的几种方式比较
python作为web服务器上的开发语言,一般都是部署在linux上
部署方法,先都会在服务器前面增加一个nginx,用它来控制对静态文件的访问;对于动态内容,反向代理到web server
制作web server有两种方法,一种是用Python程序编写的web server,比如gevent、tornado;另一种是作为模块,嵌在http server(nginx/apache)上,如uwsgi/mod_wsgi
如果只论epoll循环的话:
并发效率基本是 tornado < uwsgi < gevent
但是,如果服务器程序中,有sleep、urlopen等耗时操作:
用tornado框架最高效,因为它本身是异步非阻塞的。其他像django这种,本身是同步的。
常见部署都是 nginx + uwsgi + framework / nginx + gevent + framework / nginx + tornado
参考:
http://www.cnblogs.com/xusion/articles/3473119.html
http://www.tuicool.com/articles/aiami2
http://nichol.as/benchmark-of-python-web-servers