初识tornado

本文介绍了Tornado,一个Python编写的开源异步HTTP服务器和Web框架,以其轻量级和高性能著称。内容包括Tornado的特点、解决C10K问题的能力,以及基础使用如HTTPServer、多进程、tornado.options模块的解析。文章还讨论了Tornado启动多进程的注意事项和日志功能。
摘要由CSDN通过智能技术生成

初识tornado

  • 什么是tornado

​ 全称 Tornado Web Server , 是一个用Python编写的开源异步HTTP服务器,同时也是一个web开发框架

  • 特点

    1. 作为web框架,是一个轻量级的web框架,其拥有异步非阻塞IO的处理方式
    2. 作为web服务器,Tornado有较为出色的抗负载能力,官方用tornado和其他python web框架做对比,结果最大浏览量超过第二名近40%
  • 使用场景
    1. 用户量大,高并发

    2. 大量得 HTTP 持久连接

      (1) 使用同一个tcp连接来发送和接收多个 HTTP 请求/应答,而不是为每一个新的请求/应答 打开新的连接 得方法

      (2) 对于HTTP 1.0 , 可以在请求头(Header)中添加Connection: Keep-Alive=

      (3) 对于HTTP 1.1 , 所有的连接默认都是持久连接

  • C10K问题

    随着互联网的普及,应用的用户群体几何倍增长,此时服务器性能问题就出现。最初的服务器是基于进程/线程模型。新到来一个TCP连接,就需要分配一个进程。假如有C10K,就需要创建1W个进程,通常用C10K这一概念来描述。即并发10000个连接。

    对于单台服务器来说,根本无法承担。多台服务器分布式又要付出高昂的成本

    tornado 解决C10k问题

    ​ tornado在设计之初就考虑到了性能因素,它的 web server 从底层开始就自己实现了一整套基于 epoll 的单线程异步架构,旨在解决C10K问题


tornado 基础

  • 第一个Tornado代码

    import tornado.web
    #Tornado的基础web框架模块
    import tornado.ioloop
    #Tornado的核心io模块,封装了linux的epoll和BSD的kqueue,是tornado高效的基础
    
    # 处理类(相当于Django中的类视图)
    class IndexHandler(tornado.web.RequestHandler):
        # 路由处理方法(匹配路由后执行)
        def get(self, *args, **kwargs):
            # 一个响应,响应信息
            self.write("sunck is a good man")
    
    if __name__ == '__main__':
        # 创建一个app实例(一个应用)
        # Application:Tornado web的核心类,是与服务器接口对应,里面保存了路由映射表,添加设置,用listen方法创建一个httpf服务器示例,并绑定端口(注意:此时服务器并没有开启监听)
        app = tornado.web.Application([
            (r'/', IndexHandler),
        ])
        #绑定监听的端口,注意:此时也没有开启监听
        app.listen(8000)
        #IOLoop.current() :返回当前线程的IOLoop实例
        #IOLoop.start() :开启IOLoop实例的I/O循环,同时服务器开启监听
        tornado.ioloop.IOLoop.current().start()
    
    
  • Tornado 运行流程

  • httpserver

    HTTPServer在httpserver.py中实现,继承自TCPServer,是一个无阻塞、单线程HTTP服务器,支持多进程为prefork模式实现

    • httpserver对象
      import tornado.web
      import tornado.ioloop
      
      #引入httpserver模块
      import tornado.httpserver
      
      class IndexHandler(tornado.web.RequestHandler):
          def get(self, *a
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值