zoukankan      html  css  js  c++  java
  • 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()
    

      

  • 相关阅读:
    Hadoop-2.4.0中HDFS文件块大小默认为128M
    看两种截然不同的设计理念:分布式文件系统支持大和小文件的思考
    SecondaryNameNode中的“Inconsistent checkpoint fields”错误原因
    查看HDFS集群信息
    执行“hdfs dfs -ls”时报ConnectException
    启动Hadoop HDFS时的“Incompatible clusterIDs”错误原因分析
    “hdfs dfs -ls”命令的使用
    SuSE Linux上修改主机名
    strerror线程安全分析
    两个SSH2间免密码登录
  • 原文地址:https://www.cnblogs.com/pxfb/p/10331206.html
Copyright © 2011-2022 走看看