zoukankan      html  css  js  c++  java
  • tornado框架介绍

    一、安装tornado

    手动安装: 下载 tornado-1.2.1.tar.gz

    tar xvzf tornado-1.2.1.tar.gz
    cd tornado-1.2.1
    python setup.py build
    sudo python setup.py install

    安装要求:需要先安装:python2.7
    Mac OS X 10.6 (Python 2.6+)
    
    sudo easy_install setuptools pycurl
    Ubuntu Linux (Python 2.6+)
    
    sudo apt-get install python-pycurl
    Ubuntu Linux (Python 2.5)
    
    sudo apt-get install python-dev python-pycurl python-simplejson
    

    安装过程:

    下载:tornado-1.2.1.tar.gz,解后解压

    开始安装:

    #先检查是否是python2.7
    C:	ornado-1.2.1>python
    Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    
    #开始安装
    C:	ornado-1.2.1>python setup.py build
    
    C:	ornado-1.2.1>python setup.py install

    二、介绍tornado

      Tornado:
            1. 版本 4.4     
                要求:1.2.1
                环境:Python2.7
                
            2. 源码分析流程:
                a. python app.py
                    - 加载路由关系
                    - 加载配置文件
                    - 启动socket
                    
                    作业:
                        经历的类
                        创建对象后,对象中大概封装了
                        类中的方法的执行流程
                    
                b. 用户发请
                    - 匹配路由
                    - 执行指定类的方法
                    
                c. 异步非阻塞

    三、简单介绍tornado的使用

    示例:

    代码:

    app.py

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import tornado.ioloop
    import tornado.web
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, world")
    
    class LoginHandler(tornado.web.RequestHandler):
        def get(self):
            # self.write("请登录")
            self.render("login.html")
    
        def post(self, *args, **kwargs):
            v = self.get_argument('username')
            print(v)
            self.redirect('/index.html')
    
    settings = {
        'template_path': 'templates',
        'static_path': 'static',
        'static_url_prefix': '/ppp/',
    }
    
    # application对象中封装了:路由信息,配置信息
    application = tornado.web.Application([
        (r"/login.html", LoginHandler),
        (r"/index.html", MainHandler),
    ],**settings)
    
    # application.add_handlers('buy.oldboy.com',[
    #     (r"/login.html", LoginHandler),
    #     (r"/index.html", MainHandler),
    # ])
    
    
    if __name__ == "__main__":
        # 创建socket对象
        # sock = socket.socket()
        # inputs = [socket,]
        application.listen(8888)
    
        # 开启 r,w,e = select.select(inputs,)
        tornado.ioloop.IOLoop.instance().start()
    

    login.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>登录</h1>
        <form action="/login.html" method="POST">
            <input type="text" name="username" placeholder="用户名" />
            <input type="submit" value="提交" />
        </form>
        <img src="/ppp/1.png">
    </body>
    </html>
    

    用运行Python程序的方法运行,注意监听的端口。

    运行结果:

    四、tornado源码之待请求阶段

    上图是tornado程序启动以及接收到客户端请求后的整个过程,对于整个过程可以分为两大部分:

    • 启动程序阶段,又称为待请求阶段(上图1、2所有系列和3.0)
    • 接收并处理客户端请求阶段(上图3系列)

    简而言之:

    1、在启动程序阶段,第一步,获取配置文件然后生成url映射(即:一个url对应一个XXRequestHandler,从而让XXRequestHandler来处理指定url发送的请求);第二步,创建服务器socket对象并添加到epoll中;第三步,创建无线循环去监听epoll。

    2、在接收并处理请求阶段,第一步,接收客户端socket发送的请求(socket.accept);第二步,从请求中获取请求头信息,再然后根据请求头中的请求url去匹配某个XXRequestHandler;第三步,匹配成功的XXRequestHandler处理请求;第四步,将处理后的请求发送给客户端;第五步,关闭客户端socket。

    本篇的内容主要剖析【启动程序阶段】,下面我们就来一步一步的剖析整个过程,在此阶段主要是有下面重点标注的三个方法来实现。

    
    
  • 相关阅读:
    JavaScript prototype应用
    HTML表格
    ramnit病毒
    HTML简历表格
    Oracle、SQL Server、MySQL数据类型对比
    Oracle、SQL Server、MySQL分页方法
    java操作数据库出错
    SQL基本CRUD
    Oracle基础函数
    SQL多表查询
  • 原文地址:https://www.cnblogs.com/nulige/p/6611487.html
Copyright © 2011-2022 走看看