一 Python Web框架比較
目前主要的Python Web框架有Django 、Flask 、Tornado、web.py等。下面主要對(duì)這幾個(gè)框架做個(gè)比對(duì):
| Python Web框架 | 優(yōu)點(diǎn) | 缺點(diǎn) | 說明 |
|---|---|---|---|
| Django | 1.文檔,api資源豐富齊全 2.開源,遵循MVC設(shè)計(jì)模式; 3.框架功能齊全; |
1.框架相對(duì)重量 2.系統(tǒng)緊耦合,難以用第三方庫(kù)代替。 |
Django是目前最流行的Python框架 |
| Bottle & Flask | 輕量級(jí)框架, 基于Werkzeug WSGI工具箱和Jinja2 模板引擎設(shè)計(jì) |
文檔相對(duì)較少;學(xué)習(xí)成本較高; | Flask是由 Armin Ronacher開發(fā)的 |
| web.py | 一個(gè)小巧的Web框架; | 初學(xué)者,需要手寫輪子。 | web.py是輕量級(jí)框架; |
| Tornado | 類似于Web.py,其擁有異步非阻塞IO的處理方式。并且是一個(gè)web服務(wù)器 | 文檔相對(duì)較少;但是代碼相對(duì)精簡(jiǎn); | Tornado是FaceBook的開源軟件; |
二 Tornado Web服務(wù)器
Tornado 是 Facebook開源技術(shù)之一,基于 Apache Licence, Version 2.0 發(fā)布。Tornado 和現(xiàn)在的主流 Web 服務(wù)器框架的優(yōu)勢(shì)在于:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。因此本文選用Tornado作為服務(wù)器。
2.1 適用環(huán)境
2.1.1 操作系統(tǒng)

根據(jù)官方文檔的描述,Python 支持類Unix系統(tǒng)(包括linux和Mac OS X),也支持Windows系統(tǒng),但是并不是官網(wǎng)推薦的。
2.1.2 依賴環(huán)境

根據(jù)官網(wǎng)的描述,當(dāng)前穩(wěn)定版本Tornado 4.3支持Pyhton 2.6 ,2.7 和3.2以上版本。注意,Pyhon 3.x和Python 2.X是不兼容的。
下面是一些可選包,可用pip安裝。
unittest2是一個(gè)Tornado的測(cè)試工具,Python 2.6 需要安裝,Python最新版本不需要;
concurrent.futures是一個(gè)線程池工具,Python 2.x需要安裝,Python 3已經(jīng)內(nèi)置安裝;
pycurl是一個(gè)下載工具,依賴于Libcrul。
本文主要在win7下,基于Python3 搭建Tornado Web服務(wù)器。
2.2 下載安裝
(1)pip安裝(官方推薦),本文基于這種方式安裝。
由于Tornado 已經(jīng)列入 PyPI ,因此可以通過第三方包管理工具 pip(之前安裝pyhton 3的時(shí)候已經(jīng)安裝)。
pip install tornado
(2)源碼安裝
首先去官網(wǎng)下載tornado-4.3.tar.gz (http://www.tornadoweb.org/en/stable/index.html)
然后,對(duì)于windwos系統(tǒng)來說。進(jìn)入cmd命令行,執(zhí)行下面操作
tar xvzf tornado-4.3.tar.gz
cd tornado-4.3
python setup.py build
python setup.py install
安裝成功如下圖:

2.3 測(cè)試
新建一個(gè)web項(xiàng)目,新建文件web.py,輸入下面代碼。
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("測(cè)試tornado服務(wù)器")
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler),
])
application.listen(8888)
tornado.ioloop.IOLoop.current().start()
cmd進(jìn)入該文件下執(zhí)行python web.py --port=8888,運(yùn)行tornado服務(wù)器

瀏覽器輸入http://localhost:8888/,測(cè)試結(jié)果如下:

參考文章
- web.py 0.3中文官網(wǎng) http://webpy.org/tutorial3.zh-cn.
- Tornado英文官網(wǎng) http://www.tornadoweb.org/en/stable/
- Django 中文官網(wǎng) http://python.usyiyi.cn/django/index.html