博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tornado框架介绍
阅读量:7283 次
发布时间:2019-06-30

本文共 2807 字,大约阅读时间需要 9 分钟。

一、安装tornado

手动安装: 下载 

tar xvzf tornado-1.2.1.tar.gzcd tornado-1.2.1python setup.py buildsudo python setup.py install 安装要求:需要先安装:python2.7
Mac OS X 10.6 (Python 2.6+)sudo easy_install setuptools pycurlUbuntu Linux (Python 2.6+)sudo apt-get install python-pycurlUbuntu Linux (Python 2.5)sudo apt-get install python-dev python-pycurl python-simplejson

安装过程:

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

开始安装:

#先检查是否是python2.7C:\tornado-1.2.1>pythonPython 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> exit()#开始安装C:\tornado-1.2.1>python setup.py buildC:\tornado-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.ioloopimport tornado.webclass 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

    
Title

登录

用运行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。

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

 

转载地址:http://qgzjm.baihongyu.com/

你可能感兴趣的文章
kylin-cube存储结构
查看>>
PHP基础知识学习总结
查看>>
【SSH网上商城项目实战30】项目总结(附源码下载地址)
查看>>
2015最流行的Android组件、工具、框架大全
查看>>
如何定义领域模型(概念模型)
查看>>
关于快排的技巧
查看>>
坑爹的生活,源于你的工作谁都能干
查看>>
微信公众平台开发(59)相册
查看>>
库存管理系统
查看>>
Linux下安装JDK
查看>>
WebGL高级编程:开发Web3D图形 PDF(中文版带书签)
查看>>
asynchronous.js
查看>>
jquery视频教程网址,记录
查看>>
Rearrange a string so that all same characters become d distance away
查看>>
Python之路(第二十六篇) 面向对象进阶:内置方法
查看>>
追梦路上
查看>>
Centos7 gvim sougou搜狗输入法无法切换
查看>>
Dynamics CRM 报表导出EXCEL 列合并问题的解决方法
查看>>
MTK6573的LDO控制
查看>>
【工具】-RAP接口管理工具
查看>>