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