Tornado

优势:微框架  高性能  异步支持

缺点:轮子少  缺少最佳实践,使用的公司少。

使用场景:构建微服务。

简单的例子:

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()

  

 

 

 

 

posted @ 2019-01-28 17:51  破晓e  阅读(210)  评论(0编辑  收藏  举报