前言

Tornado(龙卷风)和Django一样是Python中比较主流的web框架,

知识铺垫:

什么是别人所说的web server /web服务器?

所有Python写的web服务器本质是就是1个符合wsgi协议标准的 socket(例如:Python的wsgiref模块就可以实现1个web服务)

web server负责 监听在某1个端口、接收客户端的连接,分割http的请求头和请求体..等底层工作

最后封装好请求头和响应头的信息,传给web框架

让我们在使用web框架开发web应用程序的时候更加快捷和方便,就可以 request.xx 、render, HttpResponse,redirect

 

什么是别人说的web 应用/web框架?

web框架负责web应用逻辑处理的部分,通常做了一些代码封装,可以更加人性性化得让我们使用(Django/Flashk。。。)

 

web server 和 web 框架如何结合?

如果想要让你的web程序运行起来,2者缺一不可,如果你使用的web框架不包含 web server就需要搭配第3方的模块,例如Django在默认情况下socket借助的是wsgiref模块

但是有的web框架包含了web server(tornado)

PythonWEB框架之Tornado

 

 

 

以Django为代表的python web 框架搭配的web server一般为gunicorn/uwsgi...这些都是基于多进程和多线程工作的,这种工作模式的缺陷是服务器每接受1个请求都会启动1个线程/进程进行处理,如果并发量过大就需要产生大量的线程/进程,服务器不能无限制得开线程和进程,所以满足不了用户量大、高并发的应用场景

 

Tornado 和现在的主流 Web 服务器框架也有着明显的区别:

Tornado是服务器和web框架的结合体,自带web server,并且在框架内部也可以实现了异步、非阻塞、且对WebSocket协议天然支持;

 

一、Tornado框架的基本组成

Tonado由 web server(基于epoll机制的IO多路复用性IO的socket)、路由系统、视图、模板语言4大部分组成,如果习惯了使用Django你会感觉它功能单薄,但是只有这样才能足够轻量,如果用到什么功能就自己去GitHub上找现成的插件,或者自实现;以下将对这些基本组件进行逐一介绍。

Django功能概览:

socket:有 
  中间件:无(使用Python的wsgiref模块)
  路由系统:有
  视图函数:有
  ORM操作:有
  模板语言:有
  simple_tag:有
  cokies:有
  session:有
  csrf:有
  xss:有
  其他:缓存、信号、Form组件、ModelFormm、Admin








tornado功能概览:

  socket:有(异步非阻塞、支持WebScoket)
  路由系统:有
  视图函数:有
  静态文件:有
  ORM操作:无
  模板语言:有
  simple_tag:有,uimethod,uimodule
  cokies:有
  session:无
  csrf:有
  xss:有
  其他:无
    
Django和Tonado功能对比

相关文章: