說(shuō)到Web Framework,Ruby的世界Rails一統(tǒng)江湖,,而Python則是一個(gè)百花齊放的世界,,各種micro-framework、framework不可勝數(shù),,下面就從GitHub中整理出的15個(gè)最受歡迎的Python開(kāi)源框架。這些框架包括事件I/O,,OLAP,,Web開(kāi)發(fā),高性能網(wǎng)絡(luò)通信,,測(cè)試,,爬蟲(chóng)等。
Django: Python Web應(yīng)用開(kāi)發(fā)框架
Django 應(yīng)該是最出名的Python框架,,GAE甚至Erlang都有框架受它影響,。Django是走大而全的方向,它最出名的是其全自動(dòng)化的管理后臺(tái):只需要使用起ORM,,做簡(jiǎn)單的對(duì)象定義,,它就能自動(dòng)生成數(shù)據(jù)庫(kù)結(jié)構(gòu)、以及全功能的管理后臺(tái),。
Diesel:基于Greenlet的事件I/O框架
Diesel提供一個(gè)整潔的API來(lái)編寫(xiě)網(wǎng)絡(luò)客戶端和服務(wù)器,。支持TCP和UDP。
Flask:一個(gè)用Python編寫(xiě)的輕量級(jí)Web應(yīng)用框架
Flask是一個(gè)使用Python編寫(xiě)的輕量級(jí)Web應(yīng)用框架,?;赪erkzeug WSGI工具箱和Jinja2
模板引擎,。Flask也被稱為“microframework”,因?yàn)樗褂煤?jiǎn)單的核心,,用extension增加其他功能,。Flask沒(méi)有默認(rèn)使用的數(shù)
據(jù)庫(kù)、窗體驗(yàn)證工具,。
Cubes:輕量級(jí)Python OLAP框架
Cubes是一個(gè)輕量級(jí)Python框架,,包含OLAP、多維數(shù)據(jù)分析和瀏覽聚合數(shù)據(jù)(aggregated data)等工具,。
Kartograph.py:創(chuàng)造矢量地圖的輕量級(jí)Python框架
Kartograph是一個(gè)Python庫(kù),,用來(lái)為ESRI生成SVG地圖。Kartograph.py目前仍處于beta階段,,你可以在virtualenv環(huán)境下來(lái)測(cè)試,。
Pulsar:Python的事件驅(qū)動(dòng)并發(fā)框架
Pulsar是一個(gè)事件驅(qū)動(dòng)的并發(fā)框架,有了pulsar,,你可以寫(xiě)出在不同進(jìn)程或線程中運(yùn)行一個(gè)或多個(gè)活動(dòng)的異步服務(wù)器,。
Web2py:全棧式Web框架
Web2py是一個(gè)為Python語(yǔ)言提供的全功能Web應(yīng)用框架,旨在敏捷快速的開(kāi)發(fā)Web應(yīng)用,,具有快速,、安全以及可移植的數(shù)據(jù)庫(kù)驅(qū)動(dòng)的應(yīng)用,兼容Google App Engine,。
Falcon:構(gòu)建云API和網(wǎng)絡(luò)應(yīng)用后端的高性能Python框架
Falcon是一個(gè)構(gòu)建云API的高性能Python框架,,它鼓勵(lì)使用REST架構(gòu)風(fēng)格,盡可能以最少的力氣做最多的事情,。
Dpark:Python版的Spark
DPark是Spark的Python克隆,是一個(gè)Python實(shí)現(xiàn)的分布式計(jì)算框架,,可以非常方便地實(shí)現(xiàn)大規(guī)模數(shù)據(jù)處理和迭代計(jì)算,。DPark由豆瓣實(shí)現(xiàn),目前豆瓣內(nèi)部的絕大多數(shù)數(shù)據(jù)分析都使用DPark完成,,正日趨完善,。
Buildbot:基于Python的持續(xù)集成測(cè)試框架
Buildbot是一個(gè)開(kāi)源框架,可以自動(dòng)化軟件構(gòu)建,、測(cè)試和發(fā)布等過(guò)程,。每當(dāng)代碼有改變,服務(wù)器要求不同平臺(tái)上的客戶端立即進(jìn)行代碼構(gòu)建和測(cè)試,,收集并報(bào)告不同平臺(tái)的構(gòu)建和測(cè)試結(jié)果,。
Zerorpc:基于ZeroMQ的高性能分布式RPC框架
Zerorpc是一個(gè)基于ZeroMQ和MessagePack開(kāi)發(fā)的遠(yuǎn)程過(guò)程調(diào)用協(xié)議(RPC)實(shí)現(xiàn)。和 Zerorpc 一起使用的 Service API 被稱為 zeroservice,。Zerorpc 可以通過(guò)編程或命令行方式調(diào)用,。
Bottle: 微型Python Web框架
Bottle是一個(gè)簡(jiǎn)單高效的遵循WSGI的微型python Web框架,。說(shuō)微型,是因?yàn)樗挥幸粋€(gè)文件,,除Python標(biāo)準(zhǔn)庫(kù)外,,它不依賴于任何第三方模塊。
Tornado:異步非阻塞IO的Python Web框架
Tornado的全稱是Torado Web Server,,從名字上看就可知道它可以用作Web服務(wù)器,,但同時(shí)它也是一個(gè)Python Web的開(kāi)發(fā)框架。最初是在FriendFeed公司的網(wǎng)站上使用,,F(xiàn)aceBook收購(gòu)了之后便開(kāi)源了出來(lái),。
webpy: 輕量級(jí)的Python Web框架
webpy的設(shè)計(jì)理念力求精簡(jiǎn)(Keep it simple and powerful),源碼很簡(jiǎn)短,,只提供一個(gè)框架所必須的東西,,不依賴大量的第三方模塊,它沒(méi)有URL路由,、沒(méi)有模板也沒(méi)有數(shù)據(jù)庫(kù)的訪問(wèn),。
Scrapy:Python的爬蟲(chóng)框架
Scrapy是一個(gè)使用Python編寫(xiě)的,輕量級(jí)的,,簡(jiǎn)單輕巧,,并且使用起來(lái)非常的方便。
最后關(guān)于框架選擇的誤區(qū)
在框架的選擇問(wèn)題上,,許多人很容易就陷入了下面兩個(gè)誤區(qū)中而不自知:
1. 哪個(gè)框架最好——世上沒(méi)有最好的框架,,只有最適合你自己、最適合你的團(tuán)隊(duì)的框架,。編程語(yǔ)言選擇也是一個(gè)道理,,你的團(tuán)隊(duì)Python最熟就用Python好了,如果最熟悉的是Ruby那就用Ruby好了,,編程語(yǔ)言,、框架都只是工具,能多,、快,、好、省的干完活就是好東西,。
2. 過(guò)分關(guān)注性能——其實(shí)大部分人是沒(méi)必要太關(guān)心框架的性能的,,因?yàn)槟汩_(kāi)發(fā)的網(wǎng)站根本就是個(gè)小站,能上1萬(wàn)的IP的網(wǎng)站已經(jīng)不多了,,上10萬(wàn)的更是很少很少,。在沒(méi)有一定的訪問(wèn)量前談性能其實(shí)是沒(méi)有多大意義的,因?yàn)槟愕腃PU和內(nèi)存一直就閑著呢,。而且語(yǔ)言和框架一般也不會(huì)是性能瓶頸,,性能問(wèn)題最常出現(xiàn)在數(shù)據(jù)庫(kù)訪問(wèn)和文件讀寫(xiě)上,。 PHP的Zend Framework是出了名的慢,但是Zend Framework一樣有大站,,如:digg.com;常被人說(shuō)有性能問(wèn)題的Ruby和Rails,,不是照樣可以開(kāi)發(fā)出twitter嗎?再者現(xiàn)在的硬 件、帶寬成本其實(shí)是很低的,,特別有了云計(jì)算平臺(tái)后,,人力成本才是最貴的,沒(méi)有上萬(wàn)的IP根本就不用太在意性能問(wèn)題,,流量上去了花點(diǎn)錢買點(diǎn)服務(wù)器空間好了,, 簡(jiǎn)單快速的解決性能問(wèn)題。
注:前面有網(wǎng)友質(zhì)疑我“Quora是用Pylons開(kāi)發(fā)的”這樣的說(shuō)法不客觀,,特說(shuō)明一下,,這里所說(shuō)的某個(gè)網(wǎng)站A是用B開(kāi)發(fā)的,只是指A主要或部分是由B開(kāi)發(fā)的,,大家就不要再去糾結(jié)A還用C了,。