目录
Tornado走的是少而精的方向,注重的是性能优越,它最出名的是异步非阻塞的设计方式。
- HTTP服务器
- 异步编程
- WebSockets
1、安装
sudo pip install tornado
2、关于平台
Tornado应该运行在类Unix平台,在线上部署时为了最佳的性能和扩展性,仅推荐Linux和BSD(因为充分利用Linux的epoll工具和BSD的kqueue工具,是Tornado不依靠多进程/多线程而达到高性能的原因)。
对于Mac OS X,虽然也是衍生自BSD并且支持kqueue,但是其网络性能通常不太给力,因此仅推荐用于开发。
对于Windows,Tornado官方没有提供配置支持,但是也可以运行起来,不过仅推荐在开发中使用。
3、一个简单例子
#coding:utf-8
import tornado.web #tornado的基础web框架模块
import tornado.ioloop #tornado的核心io循环模块,封装了Linux的epoll和BSD的kqueue,tornado高性能的基石
import tornado.httpserver # tornado的HTTP服务器实现
class IndexHandler(tornado.web.RequestHandler): #RequestHandler:封装了对应一个请求的所有信息和方法
"""主路由处理类"""
def get(self):
"""对应http的get请求方式"""
#write(响应信息)就是写响应信息的一个方法
self.write("Hello World!")
if __name__ == "__main__":
#Tornado Web框架的核心应用类,是与服务器对接的接口,里面保存了路由信息表,其初始化接收的第一个参数就是一个路由信息映射元组的列表
app = tornado.web.Application([(r"/",IndexHandler),])
#用来创建一个http服务器实例,并绑定到给定端口
app.listen(8000)
'''
app.listen(8000)是对下面两句的简化,可替换为下面两句:
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(8000)
创建了一个HTTP服务器实例http_server,因为服务器要服务于刚刚建立的web应用,将接收到的客户端请求通过web应用中的路由映射表引导到对应的handler中,所以在构建http_server对象的时候需要传出web应用对象app。http_server.listen(8000)将服务器绑定到8000端口。
'''
tornado.ioloop.IOLoop.current().start()
#IOLoop.current():返回当前线程的IOLoop实例
#IOLoop.start():启动IOLoop实例的I/O循环,同时服务器监听被打开
运行此脚本,开启tornado,浏览器输入:127.0.0.1:8000,查看:
总结Tornado Web程序编写思路
- 创建web应用实例对象,第一个初始化参数为路由映射列表。
- 定义实现路由映射列表中的handler类。
- 创建服务器实例,绑定服务器端口。
- 启动当前线程的IOLoop。