Tornado框架知識系列之一

2021-08-14 21:19:54 字數 1352 閱讀 1134

tornado全稱tornado web server,是乙個用python語言寫成的web伺服器兼web應用框架,由friendfeed公司在自己的**friendfeed中使用,被facebook收購以後框架在2023年9月以開源軟體形式開放給大眾。

特點:效能:

tornado框架和伺服器一起組成乙個wsgi的全棧替代品。單獨在wsgi容器中使用tornado網路框架或者tornaod http伺服器,有一定的侷限性,為了最大化的利用tornado的效能,推薦同時使用tornaod的網路框架和http伺服器。

如秒殺搶購、雙十一某寶購物、春節搶火車票

使用同乙個tcp連線來傳送和接收多個http請求/應答,而不是為每乙個新的請求/應答開啟新的連線的方法。

對於http 1.0,可以在請求的包頭(header)中新增connection: keep-alive。

對於http 1.1,所有的連線預設都是持久連線。

django是走大而全的方向,注重的是高效開發,它最出名的是其全自動化的管理後台:只需要使用起orm,做簡單的物件定義,它就能自動生成資料庫結構、以及全功能的管理後台。

django提供的方便,也意味著django內建的orm跟框架內的其他模組耦合程度高,應用程式必須使用django內建的orm,否則就不能享受到框架內提供的種種基於其orm的便利。

tornado走的是少而精的方向,注重的是效能優越,它最出名的是非同步非阻塞的設計方式。

import tornado.web

import tornado.ioloop

class

indexhandler

(tornado.web.requesthandler):

"""主路由處理類"""

defget

(self):

"""對應http的get請求方式"""

self.write("hello python tornado!")

if __name__ == "__main__":

(r"/", indexhandler),

])tornado.ioloop.ioloop.current().start()

以上**解釋說明:

tornado的核心io迴圈模組,封裝了linux的epoll和bsd的kqueue,tornado高效能的基石。 以linux的epoll為例,其原理如下圖:

再詳細一點的**釋:

Tornado框架知識系列之二

import tornado.web import tornado.ioloop import tornado.httpserver 新引入httpserver模組 class indexhandler tornado.web.requesthandler 主路由處理類 defget self 對應...

Tornado框架知識系列之三

在前面的示例中我們都是將服務埠的引數寫死在程式中,很不靈活。tornado為我們提供了乙個便捷的工具,tornado.options模組 全域性引數定義 儲存 轉換。用來定義options選項變數的方法,定義的變數可以在全域性的tornado.options.options中獲取使用,傳入引數 全域...

Flex Log系列之一 使用Log框架

本文使用乙個簡單的登入專案,示例flex的log框架使用。專案檢視非常簡單,包括2個介面 登入介面 loginpanel 和歡迎介面 hellopanel 登入介面如下圖 一 使用trace日誌處理 在loginpanel和hellopanel中分別增加上下面日誌處理函式 private funct...