原创 10.HTTP層:HTTPRequest,HTTPServer與HTTPConnection---HTTP層的實現

前面小節在分析 handler 時提到,handler 的讀寫實際是依靠 httprequest 來完成的。今天就分析 tornado 在 HTTP 這一層上的實現,類包括 HTTPRequest, HTTPServer 和 HTTP

原创 12.Tornado TCPServer類的設計解讀 (副標題: 一個通用的server框架)

前文已經說過,HTTPServer是派生自TCPServer,從協議層次上講,這再自然不過。 從TCPServer的實現上看,它是一個通用的server框架,基本是按照BSD socket的思想設計的。create-bind-list

原创 2.理解Tornado裏的handler (副標題:URL控制的概念)

前面我們對Tornado自帶的 hello world 作了代碼組織上的解釋,但是沒有更加深入細緻地解釋。這裏我們直接從main()函數開始,單步跟隨,看看tornado都幹了些什麼。 下面是 main() 函數的定義: 1

原创 13.從代碼分析TCPServer類的機制 (副標題:create-bind-listen)

接上面一小節,開始看 TCPServer的 code。 TCPServer的__init__函數很簡單,僅保存了參數而已。 唯一要注意的是,它可以接受一個io_loop爲參數。實際上io_loop對TCPServer來說並不是可

原创 11.Tornado在TCP層裏的工作機制---TCP層的實現

上一節(HTTP總結)是關於應用層的協議 HTTP,它依賴於傳輸層協議 TCP,例如服務器是如何綁定端口的?HTTP 服務器的 handle_stream 是在什麼時候被調用的呢?本節聚焦在 TCP 層次的實現,以便和上節的程序