Tornado简介
Tornado是一种web服务器的开源版本,同时提供web framework的api,可以直接构建自己的web程序。
Tornado与目前主流的web框架有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对epoll的运用,Tornado每秒可以处理数以千计的连接,这意味着对于实时Web服务来说,Tornado是一个比较理想的轻量级web框架。Tornado为纯pyhon版本,支持HTTP、FTP、SMTP协议。
Tornado是基于ioloop高性能异步框架,可以处理大量的非活跃长连接。使用Tornado可以大大的减少web系统中使用的组件数量,用最少的代码量和极其精简的架构实现你的系统。
Tornado是单线程的,Python虽然有多线程,但是Python的解释器有GIL,这点非常影响Tornado利用多核的能力,只能通过多进程来利用多核。既然多进程,一般需要在前端放置nginx或haproxy来做负载均衡的反向代理,或是使用这些应用服务器的wsgi模块来管理进程的生命周期等等。
反向代理
反向代理其作用就是将接收到的HTTP请求按照一定的规则转发给后端其他服务器处理。
比如在你的一台机器上跑了三个Tornado应用:foo1,foo2,foo3,端口分别为8000,8001,8003,你希望用户可以直接通过80端口来访问这些应用,这时可以用nginx或haproxy来达到这个目的了。将nginx跑在80端口,当其接收到请求时,如果是/foo1,就转发给8000端口处理;如果是/foo2,就转发给8001端口处理,foo3类似。
搭建HttpServer
|
|
客户端测试
|
|
|
|
文章参考:http://www.tornadoweb.cn/
https://www.zhihu.com/question/20136991