Tornado

Posted pxfb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

  

 

 

 

 








以上是关于Tornado的主要内容,如果未能解决你的问题,请参考以下文章

tornado v6 似乎已经放弃了 tornado.web.asynchronous 协程。在代码中解决这个问题有啥不同的方法吗?

源代码剖析tornado-memcached-sessions —— Tornado session 支持的实现

tornado服务器实现原理

1.Tornado简介&&本专栏搭建tornado项目简介

tornado 启动WSGI应用(Flask)使用多线程将同步代码变成异步

有没有一种好方法可以将 pychecker/pylint 应用于 Tornado 模板中的 python 代码?