介紹: node
tornado是由python寫出來的一個性能強大、擴展性強的web服務器。它可以處理巨大的網絡流量併發請求,它是一個輕量級的框架,能夠很容易地進行配置、添加功能、集成不一樣應用和工具。 python
最初我是經過 Bret Taylor 瞭解到FriendFeed使用tornado這個web服務器框架,後來FaceBook將FriendFeed收購以後將其開源出來。與最多隻能承受10000併發鏈接的傳統服務器框架不一樣,tornado設計之初就考慮到了性能問題,它就是爲了解決C10K問題而設計的,所以,它是一個性能很是強大的框架,同時它還集成了不少工具來處理安全性、用戶身份驗證、社交網絡的問題,tornado還有着不錯的異步通訊技術與外部接口進行交互,好比數據庫和web的api接口。從2009年9月10日發佈至今,tornado已經得到了大量的社區支持,而且增長了大量的應用擴展,除了FriendFeed和Facebook,還有許多公司也將其投入到生產環境中使用,包括Quora, Turntable.fm, Bit.ly , Hipmunk 和MyYearbook,等等。 git
擴展閱讀:C10K問題 github
相似於apache這種基於線程的服務器,爲了處理每個傳入的HTTP鏈接請求,須要維護一個系統鏈接池,Apache會將每個HTTP鏈接請求放入到鏈接池中,儘管Linux有着不一樣的發行版,可是大多數的發行版的默認線程堆棧只有8MB,Apache的架構在出現大量的長鏈接時,須要維護一個龐大的鏈接池,以便與每個鏈接進行信息交互,這會佔用大量的服務器內存,最終致使Apache性能負載過大而崩潰。 web
大多數社交網絡應用都須要實時地顯示更新信息、狀態改變、用戶通知等,這要求客戶端和服務器保持長鏈接以便隨時響應服務器的請求。這樣的HTTP長鏈接和服務器推送的請求會很快地使Apache的線程池達到峯值,一旦線程池耗盡,服務器將沒法再響應新的鏈接請求。 數據庫
異步服務器是一個很是新的應用平臺,他們是爲了解決基於線程的web服務器的侷限性而產生的。這些服務器有node.js,lighttpd,tornado,他們可以經過多進程協做優雅地解決大規模負載增長的問題,就是說異步服務器將會準確地響應來自數據或其它數據源的請求(例如:數據庫查詢或http請求)。當須要處理數據時,異步服務器會使用回調函數恢復一個已經掛起的操做,完成數據推送。在第五章咱們將會討論這個回調模式的許多異步應用特性。 apache
總而言之,若是你正在尋找一個替換巨大的CMS或者一體化的開發框架,tornado也許不是一個最好的選擇,tornado不適合用於配置一個巨大的模型或處理這一類特定模式的工做。tornado能夠作到的僅僅只是讓你很是輕鬆且快速地搭建web應用,若是你想要使用python快速地建立一個簡單、可擴展的社交應用、實時的分析引擎、請求。那麼這本書很是適合你。 windows
tornado入門指南: api
在大多數*nix系統下,安裝和配置tornado是很是容易的,你只須要經過PyPI(easy_install或pip)便可完成安裝,或者像這樣從git下載並建立也能夠: 安全
tornado沒有正式支持windows的版本,可是他能夠經過 PyPM這個軟件包管理工具進行安裝:
一旦你完成tornado的安裝,就能夠開始以你最好的狀態進行工做了!安裝包中有大量的demo可供學習,它包含如下例子:一個blog、一個簡單的facebook、一個聊天室等等,咱們將會在稍後一步一步的去學習這本書的內容,但我仍然建議你在看書以後查看這些參考的Demo。
在後面的實例中,咱們假設你使用的是unix的系統,安裝了python2.6或2.7。若是是這樣,你不須要再安裝額外的標準庫,就能夠運行tornado。若是你安裝的是版本低於python2.5,建議你再多安裝: pycURL, simpleJSON 的開發包。tornado2.0已經開始支持python3.2以上的版本,可是tornado團隊仍然建議你不要使用,由於目前還在收集tornado在python3.2以上的版本出現的缺陷。
社區和支持:
對於問題、例子以及通常的指南,官方的tornado文檔是一個很不錯的地方,那裏有各類各樣的例子和功能特性的缺陷文檔。tornadoweb.org上你能夠看到很是詳細的更新文檔。而在facebook的github倉庫上你能夠獲取到最新版本的tornado源代碼。更多的問題,你能夠訪問tornado在google group上面的討論組,那上面天天都很是活躍。