学习python web 应用程序很长时间了,可是对python web 的部署一直比较模糊,需要整理一下,由于很多问题已经有说得很清楚的优秀文章,所以先留存链接。
准备知识:
不幸的是,与Python世界中的大多数事情不同,当涉及到选择生产服务器堆栈来部署应用程序时,并没有一个明显最好的选择。
在衡量你的需求和要求后,你才能够决定使用哪个服务器。我们首先关注的是该web服务器的人气,稳定性和突出特点。要注意的是:警惕有偏见和欺骗性的基准,这些基准往往不能反映真实生产环境的条件。
Python Web Server Gateway Interface v1.0 (WSGI)
问题
在上个世纪,开发人员并不能轻松地切换web服务器,选择了一个web应用程序框架往往也意味着决定了相应的web服务器。这是由于缺乏普遍的接口规范:应用程序(框架)和Web服务器都应该适配的用于互相通信的规则(允许在不改变代码下的互换性)。
标准的诞生
在本世纪初,Python社区提出PEP-333来解决这个问题:
This document specifies a proposed standard
interface between web servers and Python web
applications or frameworks, to promote web
application portability across a variety of
web servers.
这个新标准意味着保障Web服务器和Python Web应用程序之间的可移植性。该标准的强大特性和广泛采用形成了今天的局面:存在着许多( 也许是太多 :) )愿意为你工作的web服务器。
Python Web服务器(按字母排序)
- CherryPy WSGI Server
- Gunicorn
- Tornado (HTTP Server via wsgi.WSGIContainer)
- Twisted Web
- uWSGI
- Waitress WSGI Server
-
Modules for Stand-Alone Servers
mod_python with a WSGI adapter (Apache) (Embedding Python)
详细比较请看:
Python Web应用程序(如Django,Flask)的Web服务器比较
其它链接
WSGI Servers - Full Stack Python
Web Servers and Python - Python Wiki
Web Frameworks for Python - Python Wiki
WSGI接口 - 廖雪峰python教程
WSGI简介 - Segmentfault
第一次写web就上手 - 台湾python wiki群组