一 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