從上面的圖可以看出,Tornado 不僅僅是一個WEB框架,它還完整地實現了HTTP服務器和客戶端,在此基礎上提供WEB服務。它可以分爲四層:
- 最底層的EVENT層處理IO事件;
- TCP層實現了TCP服務器,負責數據傳輸;
- HTTP/HTTPS層基於HTTP協議實現了HTTP服務器和客戶端;
- 最上層爲WEB框架,包含了處理器、模板、數據庫連接、認證、本地化等等WEB框架需要具備的功能。
在tornado的子目錄中,每個模塊都應該有一個.py文件,你可以通過檢查他們來判斷你是否從已經從代碼倉庫中完整的遷出了項目。在每個源代碼的文件中,你都可以發現至少一個大段落的用來解釋該模塊的doc string,doc string中給出了一到兩個關於如何使用該模塊的例子。
下面首先介紹 Tornado 的模塊按功能分類。
Tornado模塊分類
1. Core web framework
- tornado.web — 包含web框架的大部分主要功能,包含RequestHandler和Application兩個重要的類
- tornado.httpserver — 一個無阻塞HTTP服務器的實現
- tornado.template — 模版系統
- tornado.escape — HTML,JSON,URLs等的編碼解碼和一些字符串操作
- tornado.locale — 國際化支持
2. Asynchronous networking 底層模塊
- tornado.ioloop — 核心的I/O循環
- tornado.iostream — 對非阻塞式的 socket 的簡單封裝,以方便常用讀寫操作
- tornado.httpclient — 一個無阻塞的HTTP服務器實現
- tornado.netutil — 一些網絡應用的實現,主要實現TCPServer類
3. Integration with other services
- tornado.auth — 使用OpenId和OAuth進行第三方登錄
- tornado.database — 簡單的MySQL服務端封裝
- tornado.platform.twisted — 在Tornado上運行爲Twisted實現的代碼
- tornado.websocket — 實現和瀏覽器的雙向通信
- tornado.wsgi — 與其他python網絡框架/服務器的相互操作
4. Utilities
- tornado.autoreload — 生產環境中自動檢查代碼更新
- tornado.gen — 一個基於生成器的接口,使用該模塊保證代碼異步運行
- tornado.httputil — 分析HTTP請求內容
- tornado.options — 解析終端參數
- tornado.process — 多進程實現的封裝
- tornado.stack_context — 用於異步環境中對回調函數的上下文保存、異常處理
- tornado.testing — 單元測試
理解Tornado的核心框架之後,就能便於我們後續的理解。