可擴展的非阻塞式 Tornado 框架基礎

發表于:2012-10-08來源:Anjuke QA Team作者:parisyu點擊數: 標簽:Tornado
可擴展的非阻塞式 Tornado 框架基礎.Tornado 是 FriendFeed 使用的可擴展的非阻塞式 web 服務器及其相關工具的開源版本。這個 Web 框架看起來有些像 web.py 或者 Google 的 webapp,不過為了能有效利用非阻塞式服務器環境,這個 Web 框架還包含了一些相關的有用工具

  一、Tornado框架概述

  Tornado 是 FriendFeed 使用的可擴展的非阻塞式 web 服務器及其相關工具的開源版本。這個 Web 框架看起來有些像 web.py 或者 Google 的 webapp,不過為了能有效利用非阻塞式服務器環境,這個 Web 框架還包含了一些相關的有用工具 和優化。

  Tornado 和現在的主流 Web 服務器框架(包括大多數 Python 的框架)有著明顯的區別:它是非阻塞式服務器,而且速度相當快。得利于其 非阻塞的方式和對 epoll 的運用,Tornado 每秒可以處理數以千計的連接,這意味著對于實時 Web 服務來說,Tornado 是一個理想的 Web 框架。我們開發這個 Web 服務器的主要目的就是為了處理 FriendFeed 的實時功能 ——在 FriendFeed 的應用里每一個活動用戶都會保持著一個服務器連接。(關于如何擴容 服務器,以處理數以千計的客戶端的連接的問題,請參閱 C10K problem。)

  二、HelloWorld

  上述代碼在瀏覽器中打印一行字符串(Hello, world!)。

  Tornado框架自身實現了一個HTTP Server,因此不需要額外的Web Server,只需要運行Python腳本即可啟動整個應用。

  在Tornado框架中,一個URI對應一個RequestHandler,每一個Handler負責處理該URI的HTTP請求,GET、 POST、HEAD等HTTP方法對應Handler的get()、post()、head()等方法,HTTP請求的處理邏輯在相應的方法內實現。 Handler可以看做是Tornado框架里的Controller。

  RequestHandler的write()方法,將字符串寫入Response;render()方法將模板文件寫入Response。

  三、HelloWorld的進一步擴充

  define()函數為腳本擴展命令行參數。腳本啟動時的參數可以通過python –help命令查看:

  port參數是自定義的啟動參數,其它參數均為框架自帶的默認啟動參數。

  使用啟動參數的方法如下:

  四、靜態頁面的處理

  tornado.web.Application類的初始化,handlers是必須傳入的固定參數,后面是一個可變長的參數列表。

  向handlers列表中添加新元素,即可擴展URL路由表。

  template_path指定模板文件的所在目錄,RequestHandler渲染模板文件時,會自動到該參數指定的目錄獲取模板文件。例如上述腳本指定template_path的目錄為【當前腳本所在目錄下的templates目錄】,即“./templates”,因此,self.render(“index.html”)方法實際上渲染的是“./templates/index.html”。

  static_path指定靜態文件(img/css/js)的所在目錄。在模板文件中,通過static_url()函數訪問該目錄的文件,如下:

  五、數據庫的處理

  Tornado默認只封裝了MySQL的訪問接口,訪問其它數據庫需要使用相應數據庫的Python Interface。

  在Application類的初始化方法中,添加數據庫連接。

  在RequestHandler類中添加數據庫的訪問方法。

  在模板文件中,使用RequestHandler傳遞過來的數據(entries)。

  六、表單的處理

  在模板文件中,按照通用的HTML方式編寫表單即可。

  在RequestHandler的相應方法(get/post)中,通過get_argument()函數獲取表單提交的數據。

  七、參考資料

  官網:http://www.tornadoweb.org/

  中文版可以看這里:http://www.tornadoweb.cn/

  官方API參考:http://www.tornadoweb.org/documentation/index.html

  《Intorduction to Tornado》:http://ishare.iask.sina.com.cn/f/24156048.html

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97