正文共:1610 字 8 图 预计阅读时间:5 分钟 本篇主要从宏观的角度来为大家呈现 Tornado 源码的全貌,从上帝视角来感受一下源码的组织结构。 有人说学技术不就是coding,conding,coding ...... 这种学习方式只见树木不见森林,没有宏观的概念,当与别人聊起的时候都是说的各种细节,不能站在更高的角度来认识和思考这们技术,so还是希望大家学习东西的时候可以: 了解背景(这项技术什么背景下提出的)-->整体把握(这项技术是解决什么问题的?有哪些技术亮点?可能带来什么新的问题?)-->写demo运行(可以了解技术架构,代码组成等)-->找自己感兴趣的点研究(一个大项目的源码很多少则几千行多则几万行甚至几十万行)-->工作中使用体会(在读源码)...... 首先,我们感受一下源码的包中有哪些东西(这个是Tornado3.1.1版本):
如果有人想提前看Tornado源码注解(3.1.1版本的)可以先看看我的github: https://github.com/haishiniu/tornado3.1.1_search
(此图是本人读完3.1.1版本后梳理的框架图) 本次研究我会使用我们生产环境中的4.x版本进行分析 其次,我么来看一下核心的py文件,做一部分简单介绍: Tornado模块分类 1. Core web framework tornado.web — 包含web框架的大部分主要功能,包含RequestHandler和Application两个重要的类 tornado.httpserver — 一个无阻塞HTTP服务器的实现 tornado.template — 模版系统 tornado.escape — HTML,JSON,URLs等的编码解码和一些字符串操作 tornado.locale — 国际化支持 2. Asynchronous networking 底层模块 tornado.ioloop — 核心的I/O循环 tornado.iostream — 对非阻塞式的 socket 的简单封装,以方便常用读写操作 tornado.httpclient — 一个无阻塞的HTTP服务器实现 tornado.netutil — 一些网络应用的实现,主要实现TCPServer类 3. Integration with other services tornado.auth — 使用OpenId和OAuth进行第三方登录 tornado.database — 简单的MySQL服务端封装 tornado.platform.twisted — 在Tornado上运行为Twisted实现的代码 tornado.websocket — 实现和浏览器的双向通信 tornado.wsgi — 与其他python网络框架/服务器的相互操作 4. Utilities tornado.autoreload — 生产环境中自动检查代码更新 tornado.gen — 一个基于生成器的接口,使用该模块保证代码异步运行 tornado.httputil — 分析HTTP请求内容 tornado.options — 解析终端参数 tornado.process — 多进程实现的封装 tornado.stack_context — 用于异步环境中对回调函数的上下文保存、异常处理 tornado.testing — 单元测试 本期就先简单的介绍一下tornado的全貌,下期开始我们会进入代码阶段,再次强调:本篇虽没有讲解具体的技术,但本篇是这个系列最重要的,没有之一!这是道,后续都是术!好了下期再见,期待你的加入学习!