Python.tornado.2.tornado.options
记录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的更多相关文章
- Python开发【Tornado】:简介与使用
Tornado框架 简介: Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和 ...
- Python Web框架 tornado 异步原理
Python Web框架 tornado 异步原理 参考:http://www.jb51.net/article/64747.htm 待整理
- Python web框架 Tornado异步非阻塞
Python web框架 Tornado异步非阻塞 异步非阻塞 阻塞式:(适用于所有框架,Django,Flask,Tornado,Bottle) 一个请求到来未处理完成,后续一直等待 解决方案: ...
- 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 ...
- Python框架之Tornado(三)请求
概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3 系列所有步骤,如上图[start]是一个死循环,其中利 ...
- Python开发【Tornado】:异步Web服务(二)
真正的 Tornado 异步非阻塞 前言: 其中 Tornado 的定义是 Web 框架和异步网络库,其中他具备有异步非阻塞能力,能解决他两个框架请求阻塞的问题,在需要并发能力时候就应该使用 Torn ...
- Python开发【Tornado】:异步Web服务(一)
异步Web服务 前言: 到目前为止,我们已经看到了许多使Tornado成为一个Web应用强有力框架的功能.它的简单性.易用性和便捷性使其有足够的理由成为许多Web项目的不错的选择.然而,Tornado ...
- Python框架之Tornado(请求)
概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3系列所有步骤,如上图[start]是一个死循环,其中利用 ...
- Python框架之Tornado(概述)
本系列博文计划: 1.剖析基于Python的Web框架Tornado的源码,为何要阅读源码? Tornado 由前 google 员工开发,代码非常精练,实现也很轻巧,加上清晰的注释和丰富的 demo ...
随机推荐
- idea 新写的jsp没有找到
- reids遇到问题
今天重启爬虫服务器在连接redis数据库时突然报错:MISCONF Redis is configured to save RDB snapshots, but it is currently not ...
- Java8给出一个时间段,计算该时间范围由哪些日期(天)和月份组成
1. 判断时间段是否合法: 2. 循环判断记录数是否大于0 3. 根据起始时间算出该月的第一天.最后一天和这个月有多少天: 4. 判断起始时间是否是该月第一天,如果是,再判断结束时间与该月最后一天的大 ...
- EF CodeFirst学习笔记003--如何创建表
参考: http://www.cnblogs.com/Wayou/archive/2012/09/20/EF_CodeFirst.html webconfig中修改: <connectionSt ...
- dns隧道 dns2tcpd
有些网络的防火墙设置只允许端口53的UDP流量,就不能通过tcp搭建隧道,这种情况下我们可以通过UDP搭建DNS隧道,通过搭建一个DNS服务器委派的子域,这个子域因为使我们自己搭建的主机,这时候就可以 ...
- JMeter使用中遇到的问题:Jmeter Debug - "Unrecognized VM option '+HeapDumpOnOutOfMemoryError"(转载)
转载自 http://www.cnblogs.com/yangxia-test 启动JMeter.bat的程序时,出现以下出错信息: Unrecognized VM option '+HeapDump ...
- SpringCloud报错: "Field discoveryClient in com.controller.DcController required a bean of type 'com.netflix.discovery.DiscoveryClient' that could not be found."
SpringCloud报错: "Field discoveryClient in com.controller.DcController required a bean of type 'c ...
- WAS 与IHS集成问题
1.安装好WAS与IHS后 发布Web发现无法启动 查阅资料后发现缺少插件Plugins 于是去下载安装对应版本的Plugins 发现还是有问题 后来想起发布web01时,插件还未安装.因此重新发布一 ...
- AJAX模板
$.ajax({ type:"",//Ajax请求的提交方式(GET或POST) dataType:"text",//请求的类型 url:"" ...
- TOJ3097: 单词后缀 (字典树 or map瞎搞)
传送门 (<---可以点击的~) 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 描述 有些英语单词后缀都是一样的,现在我们需要从给定的一堆单词里 ...