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()

参考地址(官方文档)

发布了161 篇原创文章 · 获赞 37 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/ybw_2569/article/details/103526005
今日推荐