记录Tornado-4.0.2源码的阅读,学习,分析

options.py

1. imports 部分

1.1 __future__

 from __future__ import absolute_import, division, print_function, with_statement

future_statement 即:from __futuren import XXX. 参见 XiaoKL学Python(C)__future__

1.2 other imports from Python Library

 import datetime
import numbers
import re
import sys
import os
import textwrap

1.3 other imports from tornado

 from tornado.escape import _unicode
from tornado.log import define_logging_options
from tornado import stack_context
from tornado.util import basestring_type, exec_in

2. 定义的类

2.1 OptionParser类

该类负责解析命令行的Option, 每个option被抽象为类_Option的对象。

2.2 _Option类

代表命令行上的每个option,该类为内部类。

2.3 全局的OptionParser对象

定义了一个全局的OptionParser对象。options.py提供的接口都是在该对象上进行操作的。

末尾调用了以下接口来将log相关的option添加到options.py模块中。

 define_logging_options(options)

3. options.py对外提供的接口

[Todo]

3.1 define

 def define(name, default=None, type=None, help=None, metavar=None,
multiple=False, group=None, callback=None)

3.2 parse_command_line

 def parse_config_file(path, final=True)

Learn From options.py

1. sys模块

import sys

https://docs.python.org/2/library/sys.html?highlight=sys#module-sys

sys._getframe([depth])

"Return a frame object from the call stack. If optional integer depth is given, return the frame

object that many calls below the top of the stack. If that is deeper than the call stack, ValueError

is raised. The default fordepth is zero, returning the frame at the top of the call stack."

在options.py中的使用,在OptionParser类的define方法的实现中:

         frame = sys._getframe(0)

2. inspect 模块

https://docs.python.org/2/library/inspect.html

"The inspect module provides several useful functions to help get information about live

objects such as modules, classes, methods, functions, tracebacks, frame objects, and code objects. "

该模块中包含 frame 类型(即: sys._getframe() 返回值的类型 )的说明。

3. unittest.mock.patch

mock 模块

Python中的单元测试。

4. 不了解的语法

4.1 return xxxx if yyyy else zzzz

     def value(self):
return self.default if self._value is _Option.UNSET else self._value

4.2 xxx for yyy, zzz in ttt

     _TIMEDELTA_ABBREV_DICT = dict(
(abbrev, full) for full, abbrevs in _TIMEDELTA_ABBREVS
for abbrev in abbrevs)

4.3 正则表达式

     _FLOAT_PATTERN = r'[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?'

Reference

1. http://www.tornadoweb.org/en/stable/options.html

Python.tornado.2.tornado.options的更多相关文章

  1. Python开发【Tornado】:简介与使用

    Tornado框架 简介: Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和 ...

  2. Python Web框架 tornado 异步原理

    Python Web框架 tornado 异步原理 参考:http://www.jb51.net/article/64747.htm 待整理

  3. Python web框架 Tornado异步非阻塞

    Python web框架 Tornado异步非阻塞   异步非阻塞 阻塞式:(适用于所有框架,Django,Flask,Tornado,Bottle) 一个请求到来未处理完成,后续一直等待 解决方案: ...

  4. tornado接收ajax的post请求报错WARNING:tornado.access:405 OPTIONS /add

    后端报错信息 WARNING:tornado.access:405 OPTIONS /add (::1) 1.00m 前端报错信息 2xhr.js?ec6c:172 OPTIONS http://lo ...

  5. Python框架之Tornado(三)请求

    概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3 系列所有步骤,如上图[start]是一个死循环,其中利 ...

  6. Python开发【Tornado】:异步Web服务(二)

    真正的 Tornado 异步非阻塞 前言: 其中 Tornado 的定义是 Web 框架和异步网络库,其中他具备有异步非阻塞能力,能解决他两个框架请求阻塞的问题,在需要并发能力时候就应该使用 Torn ...

  7. Python开发【Tornado】:异步Web服务(一)

    异步Web服务 前言: 到目前为止,我们已经看到了许多使Tornado成为一个Web应用强有力框架的功能.它的简单性.易用性和便捷性使其有足够的理由成为许多Web项目的不错的选择.然而,Tornado ...

  8. Python框架之Tornado(请求)

    概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3系列所有步骤,如上图[start]是一个死循环,其中利用 ...

  9. Python框架之Tornado(概述)

    本系列博文计划: 1.剖析基于Python的Web框架Tornado的源码,为何要阅读源码? Tornado 由前 google 员工开发,代码非常精练,实现也很轻巧,加上清晰的注释和丰富的 demo ...

随机推荐

  1. BlurZoomGallery一个完美下拉进入大图模式

    BlurZoomGallery一个完美的Gallery和view的事件处理,下拉放大的时候gallery不断的在添加高度,gallery效果在放大,实现下拉进入大图模式,view滑动事件和galler ...

  2. Hadoop分布式HA的安装部署

    Hadoop分布式HA的安装部署 前言 单机版的Hadoop环境只有一个namenode,一般namenode出现问题,整个系统也就无法使用,所以高可用主要指的是namenode的高可用,即存在两个n ...

  3. hive sql 效率提升

    转 :  http://www.cnblogs.com/xd502djj/p/3799432.html hive的查询注意事项以及优化总结 . Hive是将符合SQL语法的字符串解析生成可以在Hado ...

  4. BN和滑动平均

    BN目的是使得每层训练的输出结果在同一分布下,实验证明不仅可以加速收敛速度,还可以提高准确度 因为如果想要计算所有图像的均值与方差,显然不太现实,所以每次计算每个batch的方差与均值,为了使得每个b ...

  5. NYOJ20-吝啬的国度-图-dfs

    20-吝啬的国度 内存限制:64MB时间限制:1000ms特判: No 难度:3 题目描述: 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...

  6. 什么是JIT,写的很好

    什么是JIT 一些其他解释的网站:http://www.sohu.com/a/169704040_464084 1.动态编译(dynamic compilation)指的是“在运行时进行编译”:与之相 ...

  7. sass 的安装 编译 使用

    1.使用node 的command 运行命令: gem install sass2.cmd检查是否安装成功 sass -v 如果成功了 可以看见版本信息Sass 3.5.5 ...3. 创建.scss ...

  8. Choosing the Type at Runtime

    [Choosing the Type at Runtime] You cannot use a general expression as the React element type. If you ...

  9. Eclipse kepler 安装 Dynamic Web Project差距WTP

    原文地址:http://blog.csdn.net/westrain2010/article/details/25122999, 欢迎转载 Eclipse 标准版是不能创建 Dynamic Web P ...

  10. java面试题:jvm

    jvm内存区域 Q:jvm内存怎么划分的? 答: 方法区(线程共享):各个线程共享的一个区域,用于存储虚拟机加载的类信息.常量.静态变量.即时编译器编译后的代码等数据.虽然 Java 虚拟机规范把方法 ...