Python語言寫成的Web服務器 Tornado 簡介
Tornado 是 FriendFeed 使用的可擴展的非阻塞式 web 服務器及其相關工具的開源版本。這個 Web 框架看起來有些像 web.py 或者 Google 的 webapp,不過為了能有效利用非阻塞式服務器環境,這個 Web 框架還包含了一些相關的有用工具和優化。
Tornado 和現在的主流 Web 服務器框架(包括大多數 Python 的框架)有著明顯的區別:它是非阻塞式服務器,而且速度相當快。得利于其非阻塞的方式和對 epoll 的運用,Tornado 每秒可以處理數以千計的連接,這意味著對于實時 Web 服務來說,Tornado 是一個理想的 Web 框架。我們開發這個 Web 服務器的主要目的就是為了處理 FriendFeed 的實時功能 ——在 FriendFeed 的應用里每一個活動用戶都會保持著一個服務器連接。(關于如何擴容服務器,以處理數以千計的客戶端的連接的問題,請參閱 C10K problem。)
請參見 Tornado 文檔 或 Tornado 原文文檔(鏡像)以詳細了解該 Web 框架。
下載和安裝
自動安裝: Tornado 已經列入 PyPI ,因此可以通過 pip
或者 easy_install
來安裝。如果你沒有安裝 libcurl 的話,你需要將其單獨安裝到系統中。請參見下面的安裝依賴一節。注意一點,使用 pip
或 easy_install
安裝的 Tornado 并沒有包含源代碼中的 demo 程序。
手動安裝: 下載 tornado-1.2.1.tar.gz
tar xvzf tornado-1.2.1.tar.gz cd tornado-1.2.1 python setup.py build sudo python setup.py install
Tornado 的代碼托管在 GitHub 上面。對于 Python 2.6 以上的版本,因為標準庫中已經包括了對 epoll
的支持,所以你可以不用 setup.py
編譯安裝,只要簡單地將 tornado 的目錄添加到 PYTHONPATH
就可以使用了。
安裝需求
Tornado 在 Python 2.5, 2.6, 2.7 中都經過了測試。要使用 Tornado 的所有功能,你需要安裝 PycURL (7.18.2 或更高版本) 以及 simplejson (僅適用于Python 2.5,2.6 以后的版本標準庫當中已經包含了對 JSON 的支持)。為方便起見,下面將列出 Mac OS X 和 Ubuntu 中的完整安裝方式:
Mac OS X 10.6 (Python 2.6+)
sudo easy_install setuptools pycurl
Ubuntu Linux (Python 2.6+)
sudo apt-get install python-pycurl
Ubuntu Linux (Python 2.5)
sudo apt-get install python-dev python-pycurl python-simplejson
Hello, world
以下是經典的 "Hello, world" 示例:
import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") application = tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": application.listen(8888) tornado.ioloop.IOLoop.instance().start()
請參見 Tornado 文檔 以詳細了解該 Web 框架。
討論和支持
你可以在 Tornado 開發者郵件列表中討論和提交 bug。你還可以可以在 Tornado wiki 里面找到更多的資源。
轉自:http://www.tornadoweb.cn/