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...