1、tornado 是什么?
tornado是一个python web框架,和异步的网络库。使用的是非阻塞i/o,基于事件ioloop机制。在网络通信层,使用的是epoll模型。tornado是一个很高效的web开发框架,通过这个框架,开发人员可以快速的开发。下面是tornado的设计模型:
从图中可以看出,整个设计分为四层:
1、 最低层的EVENT层处理IO事件;
2、 TCP层实现了TCP服务器,负责数据传输;
3、 HTTP/HTTPS层基于HTTP协议实现了HTTP服务器和客户端;
4、 最上层为WEB框架
2、tornado安装
1、下载tornado
$wget https://github.com/downloads/facebook/tornado/tornado-2.4.1.tar.gz
2、解压编译安装
$ tar -zxvf tornado-2.4.1.tar.gz $ cd tornado-2.4.1 $ python setup.py build $ python setup.py install
3、创建测试文件
import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") application = tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": application.listen(8888) tornado.ioloop.IOLoop.instance().start()
4、运行文件
$python hello.py
出现下面的错误
import zlib ImportError: No module named zlib
解决方法:再次编译python。 进入python源程序目录执行 :
$./configure --with-zlib $make && make install
再次运行python hello.py,然后打开浏览器,输入http://ip:8888就看到页面输出Hello, world了。表明已经OK了。
3、tornado web框架使用实例
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
note:每个url都对应一个handler来处理。
4 、tornado httpservice使用实例
def handle_request(request):
message = "You requested %s\n" % request.uri
request.write("HTTP/1.1 200 OK\r\nContent-Length: %d\r\n\r\n%s" % (
len(message), message))
request.finish()
http_server = tornado.httpserver.HTTPServer(handle_request)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
总结:tornado是google公司员工开发的,屏蔽了底层的网络通信, 让IT技术人员可以只注重业务逻辑的处理,节省了更多的时间。