Tornado 簡介與 Hello world !

Tornado 是一個Python web框架和異步網絡庫,起初由 FriendFeed 開發. 通過使用非阻塞網絡I/O, Tornado可以支撐上萬級的連接,處理 長連接, WebSockets ,和其他需要與每個用戶保持長久連接的應用.。
Tornado是使用Python編寫的一個強大的、可擴展的Web服務器。它在處理嚴峻的網絡流量時表現得足夠強健,但卻在創建和編寫時有着足夠的輕量級,並能夠被用在大量的應用和工具中。
Tornado 大體上可以被分爲4個主要的部分:

  • web框架 (包括創建web應用的 RequestHandler 類,還有很多其他支持的類)
  • HTTP的客戶端和服務端實現 (HTTPServer and AsyncHTTPClient)
  • 異步網絡庫 (IOLoop and IOStream), 爲HTTP組件提供構建模塊,也可以用來實現其他協議
  • 協程庫 (tornado.gen) 允許異步代碼寫的更直接而不用鏈式回調的方式

Tornado主要使用的包

  • web框架

    tornado.web — RequestHandler 和 Application 類
    tornado.template — 產生靈活的輸出
    tornado.escape — 轉義和字符串操作
    tornado.locale — 國際化支持
    tornado.websocket — 瀏覽器與服務器雙向通信

  • HTTP servers and clients

    tornado.httpserver — 非阻塞 HTTP server
    tornado.httpclient — 異步 HTTP 客戶端
    tornado.httputil — 操作HTTP頭和url
    tornado.http1connection – HTTP/1.x 客戶機/服務器的實現

  • 異步網絡

    tornado.ioloop — 主事件循環
    tornado.iostream — :方便的爲非阻塞套接字包裝
    tornado.netutil — 各種各樣的網絡工具
    tornado.tcpclient — IOStream 連接
    tornado.tcpserver — 基於 IOStream 的基礎 TCP 服務

  • 協程和併發

    tornado.gen — Simplify asynchronous code
    tornado.concurrent — Work with threads and futures
    tornado.locks – 同步原語
    tornado.queues – 協程的隊列
    tornado.process — Utilities for multiple processes

  • 與其他服務集成

    tornado.auth — Third-party login with OpenID and OAuth
    tornado.wsgi — Interoperability with other Python frameworks and servers
    tornado.platform.asyncio — Bridge between asyncio and Tornado
    tornado.platform.caresresolver — Asynchronous DNS Resolver using C-Ares
    tornado.platform.twisted — Bridges between Twisted and Tornado

  • 通用工具

    tornado.autoreload — Automatically detect code changes in development
    tornado.log — Logging support
    tornado.options — Command-line parsing
    tornado.stack_context — Exception handling across asynchronous callbacks
    tornado.testing — Unit testing support for asynchronous code
    tornado.util — General-purpose utilities

Hello Tornado

import tornado.web
import tornado.ioloop
import tornado.options
import tornado.httpserver

# 從命令行中讀取設置
from tornado.options import define,options
define('port',default=8000,help='run on the given port',type=int)

# 定義處理類型
class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        # 查詢字符串中取得參數greeting的值。
        greeting = self.get_argument('greeting', 'Hello')
        # 以一個字符串作爲函數的參數,並將其寫入到HTTP響應中。
        self.write('hello Tornado')

if __name__ == '__main__':
    # tornado.ioloop.IOLoop.instance().close()
    # 解析命令行
    tornado.options.parse_command_line()

    #創建了一個Application類的實例。傳遞給Application類init方法的最重要的參數是handlers。
    # 它告訴Tornado應該用哪個類來響應請求

    #參數handlers它應該是一個元組組成的列表,其中每個元組的第一個元素是一個用於匹配的正則表達式,
    # 第二個元素是一個RequestHanlder類。
    app = tornado.web.Application(handlers=[(r'/', IndexHandler)])

    # httpserver 監聽端口
    http_servr = tornado.httpserver.HTTPServer(app)
    http_servr.listen(options.port)

    # 啓動web程序,開始監聽端口的連接
    tornado.ioloop.IOLoop.instance().start()

參考地址(官方文檔)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章