python開發框架

hiekay發表於2019-01-09

不管是python,還是php,亦或別的做web專案的語言,乃至於做其它非web專案的開發,一般都要用到一個稱之為什麼框架的東西。

框架的基本概念

開發這對框架的認識,由於工作習慣和工作內容的不同,有很大差異,這裡姑且擷取維基百科中的一種定義,之所以要給出一個定義,無非是想有所瞭解,但是是否知道這個定義,絲毫不影響後面的工作。

軟體框架(Software framework),通常指的是為了實現某個業界標準或完成特定基本任務的軟體元件規範,也指為了實現某個軟體元件規範時,提供規範所要求之基礎功能的軟體產品。

框架的功能類似於基礎設施,與具體的軟體應用無關,但是提供並實現最為基礎的軟體架構和體系。軟體開發者通常依據特定的框架實現更為複雜的商業運用和業務邏輯。這樣的軟體應用可以在支援同一種框架的軟體系統中執行。

簡而言之,框架就是制定一套規範或者規則(思想),大家(程式設計師)在該規範或者規則(思想)下工作。或者說就是使用別人搭好的舞臺,你來做表演。

我比較喜歡最後一句的解釋,別人搭好舞臺,我來表演。這也就是說,如果我在做web專案的時候,能夠省卻很多開發工作。的確是。所有,做web開發,要用一個框架。

有高手工程師鄙視框架,認為自己編寫的才是王道。這方面不爭論,框架是開發中很流行的東西,我還是固執地認為用框架來開發,更划算。

python框架

有人說php(什麼是php,嚴肅的說法,這是另外一種語言,更高雅的說法,是某個活動的漢語拼音簡稱)框架多,我不否認,php的開發框架的確很多很多。不過,python的web開發框架,也足夠使用了,列舉幾種常見的web框架:

  • Django:這是一個被廣泛應用的框架,如果在網上搜尋,會發現很多公司在招聘的時候就說要會這個,其實這種招聘就暴露了該公司的開發水平要求不高。框架只是輔助,真正的程式設計師,用什麼框架,都應該是根據需要而來。當然不同框架有不同的特點,需要學習一段時間。
  • Flask:一個用Python編寫的輕量級Web應用框架。基於Werkzeug WSGI工具箱和Jinja2模板引擎。
  • Web2py:是一個為Python語言提供的全功能Web應用框架,旨在敏捷快速的開發Web應用,具有快速、安全以及可移植的資料庫驅動的應用,相容Google App Engine(這是google的元計算引擎,後面我會單獨介紹)。
  • Bottle: 微型Python Web框架,遵循WSGI,說微型,是因為它只有一個檔案,除Python標準庫外,它不依賴於任何第三方模組。
  • Tornado:全稱是Torado Web Server,從名字上看就可知道它可以用作Web伺服器,但同時它也是一個Python Web的開發框架。最初是在FriendFeed公司的網站上使用,FaceBook收購了之後便開源了出來。
  • webpy: 輕量級的Python Web框架。webpy的設計理念力求精簡(Keep it simple and powerful),原始碼很簡短,只提供一個框架所必須的東西,不依賴大量的第三方模組,它沒有URL路由、沒有模板也沒有資料庫的訪問。

Tornado

一看到這個標題就知道,本教程中將選擇使用這個框架。此前有朋友建議我用Django,首先它是一個好東西。但是,我更願意用Tornado,為什麼呢?因為……,看下邊或許是理由,也或許不是。

Tornado全稱Tornado Web Server,是一個用Python語言寫成的Web伺服器兼Web應用框架,由FriendFeed公司在自己的網站FriendFeed中使用,被Facebook收購以後框架以開源軟體形式開放給大眾。廢話不說,還是看Tornado的效能,因為選框架,一定要選好效能的,沒準兒什麼時候你也開發高大上的東西了。

Tornado的效能是相當優異的,因為它試圖解決一個被稱之為“C10k”問題,就是處理大於或等於一萬的併發。一萬呀,這可是不小的量。(關於C10K問題,看官可以瀏覽:C10k problem)

下表是和一些其他Web框架與伺服器的對比,供參考(資料來源: https://developers.facebook.com/blog/post/301 )

條件:處理器為 AMD Opteron, 主頻2.4GHz, 4核

服務 部署 請求/每秒
Tornado nginx, 4程式 8213
Tornado 1個單執行緒程式 3353
Django Apache/mod_wsgi 2223
web.py Apache/mod_wsgi 2066
CherryPy 獨立 785

看了這個對比表格,還有什麼理由不選擇Tornado呢?

就是它了——Tornado

安裝Tornado

Tornado的官方網站:http://www.tornadoweb.org

在官網上,有安裝方法,其實,看官也可以直接在官方上學習。另外,有一箇中文映象網站,看官也可以訪問:http://www.tornadoweb.cn/

我在自己電腦中(ubuntu12.04),用下面方法安裝,只需要一句話即可:

pip install tornado

這是因為Tornado已經列入PyPI,因此可以通過 pip 或者 easy_install 來安裝。

如果你沒有安裝 libcurl 的話,你需要將其單獨安裝到系統中。請參見下面的安裝依賴一節。

如果不用這種方式安裝,下面的頁面中有可以供下載的最新原始碼版本和安裝方式:

https://pypi.python.org/pypi/tornado/

此外,在github上也有託管,可以通過上述頁面進入到github看原始碼。

最後要補充一個要點,就是上述下載的Tornado無法直接安裝在windows上,如果要在windows上安裝,建議使用pypm(這是一個什麼東西,關於這個東西,可以訪問官方文件:http://docs.activestate.com/activepython/2.6/pypm.html ,說實話,我也沒有用過它,只是看了看文件罷了。如果有使用的,可以寫一個教程共享之。),如下安裝:

C:> pypm install tornado


相關文章