优势:微框架 高性能 异步支持
缺点:轮子少 缺少最佳实践,使用的公司少。
使用场景:构建微服务。
简单的例子:
import tornado.ioloop
import tornado.web
class Mainhandler(tornado.web.RequestHandler):#类名可自定义
def get(self):#get方法
self.write('hello,word')#写入返回内容
def make_app():
return tornado.web.Application([(r'/',Mainhandler),])#路径由定义的类执行
if __name__ == '__main__':
app = make_app()
app.listen(80)
tornado.ioloop.IOLoop.current().start()
使用tornado的模板渲染功能
class Px_web(tornado.web.RequestHandler):#类名自定
def get(self):#get方法
self.render('base.html')#返回base模板
def make_app():
return tornado.web.Application(
[
(r'/',Px_web),
],
template_path = os.path.join(os.path.dirname(__file__),'template')#设置模板路径template_path变量固定写法
)
if __name__ == '__main__':
app = make_app()
app.listen(80)
tornado.ioloop.PollIOLoop.current().start()
tornado变量传值
html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>{{message}}</h1>
</body>
</html>
后端写class Px_web(tornado.web.RequestHandler): def get(self):
self.render('base.html',message='hello')#在这传
def make_app():
return tornado.web.Application(
[
(r'/',Px_web),
],
template_path = os.path.join(os.path.dirname(__file__),'template')
)
if __name__ == '__main__':
app = make_app()
app.listen(80)
tornado.ioloop.PollIOLoop.current().start()
tornado的异步使用
# -*- coding: utf-8 -*-
__author__ = 'Px'
import time
from tornado import gen
import tornado.web
import tornado.ioloop
import datetime
import tornado.httpserver
import sys
reload(sys)
sys.setdefaultencoding('utf8')
class sleephand(tornado.web.RequestHandler):
@gen.coroutine
def get(self):
yield tornado.gen.sleep(3)
self.write(str(datetime.datetime.now()))
def make_app():
return tornado.web.Application(
[(r'/',sleephand),
]
)
if __name__ == '__main__':
app = make_app()
httpserver = tornado.httpserver.HTTPServer(app)
httpserver.listen(80)
tornado.ioloop.IOLoop.instance().start()