• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Tornado框架基礎

    發表于:2012-10-17來源:Anjuke QA Team作者:parisyu點擊數: 標簽: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 <filename> –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.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>