Tornado服務器的學習

    Tornado就是咱們在 FriendFeed 的 Web 服務器及其經常使用工具的開源版本。Tornado 和如今的主流 Web 服務器框架(包括大多數 Python 的框架)有着明顯的區別:它是非阻塞式服務器,並且速度至關快。得利於其 非阻塞的方式和對epoll的運用,Tornado 每秒能夠處理數以千計的鏈接,所以 Tornado 是實時 Web 服務的一個 理想框架。咱們開發這個 Web 服務器的主要目的就是爲了處理 FriendFeed 的實時功能 ——在 FriendFeed 的應用裏每個活動用戶都會保持着一個服務器鏈接。python

Tornado的安裝:ios

手動安裝: 下載 tornado-2.0.tar.gzgit

tar xvzf tornado-2.0.tar.gz cd tornado-2.0 python setup.py build sudo python setup.py install

Tornado 的代碼託管在 GitHub 上面。對於 Python 2.6 以上的版本,由於標準庫中已經包括了對 epoll 的支持,因此你能夠不用 setup.py 編譯安裝,只要簡單地將 tornado 的目錄添加到 PYTHONPATH 就可使用了。固然在安裝Torando以前你須要安裝PycURL以及simplejson。github

 

主要模塊

  • web - FriendFeed 使用的基礎 Web 框架,包含了 Tornado 的大多數重要的功能
  • escape - XHTML, JSON, URL 的編碼/解碼方法
  • database - 對 MySQLdb 的簡單封裝,使其更容易使用
  • template - 基於 Python 的 web 模板系統
  • httpclient - 非阻塞式 HTTP 客戶端,它被設計用來和 web 及 httpserver 協同工做
  • auth - 第三方認證的實現(包括 Google OpenID/OAuth、Facebook Platform、Yahoo BBAuth、FriendFeed OpenID/OAuth、Twitter OAuth)
  • locale - 針對本地化和翻譯的支持
  • options - 命令行和配置文件解析工具,針對服務器環境作了優化

底層模塊

  • httpserver - 服務於 web 模塊的一個很是簡單的 HTTP 服務器的實現
  • iostream - 對非阻塞式的 socket 的簡單封裝,以方便經常使用讀寫操做
  • ioloop - 核心的 I/O 循環

 

 

Tornado 的 Web 程序會將 URL 或者 URL 範式映射到 tornado.web.RequestHandler 的子類上去。在其子類中定義了get() 或 post() 方法,用以處理不一樣的 HTTP 請求。web

下面的代碼將 URL 根目錄 / 映射到 MainHandler,還將一個 URL 範式 /story/([0-9]+) 映射到 StoryHandler。正則表達式匹配的分組會做爲參數引入 的相應方法中:正則表達式

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("You requested the main page")

class StoryHandler(tornado.web.RequestHandler):
    def get(self, story_id):
        self.write("You requested the story " + story_id)

application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/story/([0-9]+)", StoryHandler),
])
相關文章
相關標籤/搜索