Tornado概况

来源:互联网 发布:游戏程序员 职业规划 编辑:程序博客网 时间:2024/06/05 23:58

一.Tornado是什么东西

tornado是一个用Python语言写成的Web服务器应用框架,和django一样是python web开发经常使用的web框架

特点(对比django):
1. tornado是一个轻量级的web框架,他拥有异步非阻塞的IO处理模式
2. 作为web服务器,tornado有较为出色的抗负载能力,官方用niginx反向代理的方式部署tornado和其他python web服务器框架进行对比,结果最大浏览量超过第二名近40%。
3. tornado是一个小而精的web框架,他追求定制化的代码编写,拓展性更加完善,可控性更大强大。


tornado内置模块

  1. tornado.web
    • RequestHandler
      封装了对应的请求的所有方法和信息,self.write(“响应信息”)就是一个简单返回页面的方法,对应的前端传来的不同的请求方式,就会有对应的处理方法(如对应的get方式,就将对应的处理逻辑写在get()方法中)


2.Application
tornado web框架的核心应用类,是和服务器对接的接口,相当于django的URLS模块,里面保存路由信息和对应映射,
其中的listen(端口)方法就是用来创建一个http服务器实例–注意此时并没有开启监听

3.tornado.ioloop
这是tornado的核心功能,他是通过封装了linux的epoll(监听)
通过对比django对于处理高并发的对比,我们来了解tornado的异步非阻塞IO处理到底有什么神秘高效之处
Django:
django中在处理并发时,是采用当有一个请求接入进来的时候,会开启一个线程来进行请求处理,从而保证在各个独立的请求不会造成数据错乱,这样的处理在并发量达到一定数量,就会导致内存中开辟了大量的线程从而也会导致服务器的处理效率下降

Tornado:
tornado在处理并发问题上他是采用了linux上的epoll和BSD的kqueue,当多个请求一起接入到tornado,他是这样处理的,每一个接入的请求会创建一个epoll监听socke进行管理,这种机制是通过循环监听来处理高并发的请求事件,当一个请求结束后,后释放这个epoll,这个epoll会继续去接入新的请求。

3.options
tornado.options模块是一个全局参数定义,存储和转换
tornado.options.defind()是用来定义options选项变量的方法,定义的变量可以在全局的tornado.options.option中获取使用

  • name 选项变量名,须保证全局唯一性,否则会报“Option ‘xxx’ already defined in …”的错误;
  • default 选项变量的默认值,如不传默认为None;
  • type 选项变量的类型,从命令行或配置文件导入参数的时候tornado会根据这个类型转换输入的值,转换不成功时会报错,可以是str、float、int、datetime、timedelta中的某个,若未设置则根据default的值自动推断,若default也未设置,那么不再进行转换。可以通过利用设置type类型字段来过滤不正确的输入。
  • multiple 选项变量的值是否可以为多个,布尔类型,默认值为False,如果multiple为True,那么设置选项变量时值与值之间用英文逗号分隔,而选项变量则是一个list列表(若默认值和输入均未设置,则为空列表[])。
  • help 选项变量的帮助提示信息,在命令行启动tornado时,通过加入命令行参数 –help 可以查看所有选项变量的信息(注意,代码中需要加入tornado.options.parse_command_line())。
原创粉丝点击