文件结构:
utils.py中定义的是些 General Utilities,通用工具集和数据结构
1.对序列进行分组的函数(生成器的很好使用,值得借鉴)group
|
|
|
|
web.py-0.111中的实现不能,分出最后一个元素
|
|
2.缓存函数每个线程调用的返回结果。memoize
|
|
|
|
3.重定向输出到一个对象中(在类中定义一个write方法,用于重定向)
|
|
4.捕获异常,格式化信息输出的函数(可以借用)(web.py-0111)
|
|
frames 保存跟踪异常回溯的每层 信息
|
|
用于异常展示的HTML模板(django框架里面的):基于Cheetah模板系统(Cheetah是一个用Python写的模板系统与代码生成工具)
|
|
5.application类
钩子函数:
loadhook(func) 在处理请求之前 func()
unloadhook(func) 在处理请求之后 func()
app.add_processor(processor) processor的参数为handler:请求处理函数
web.config.debug=False 请求处理不会自动重新加载 app所在模块的对象,web.py自带的服务器默认值为True
在 wsgi.py 中web.config.setdefault(‘debug’, _is_dev_mode())设置debug的默认值,_is_dev_mode判断是否是开发环境
wsgifunc 方法,返回一个兼容WSGI的application函数 ,接受一系列中间件middleware参数
该方法中定义的函数
peep(iterator) ”’Peeps into an iterator by doing an iteration and returns an equivalent iterator.”’
is_generator(x) 判断对象是否是一个生成器
wsgi
_cleanup 方法 清除所有ThreadedDict的是实例对象(每实例化一个线程字典对象都会被保存)
load 方法,用env字典变量初始化web.ctx各项属性值. 在wsgiffunc方法返回的wsgi函数中调用
no finish…
web.py中定义几种数据结构:
1. Storage类
在utils文件中定义, 类字典对象,从内建对象dict派生,通过实现特殊方法:getattr,setattr,delattr,
以至于像设置、获取、删除对象的属性和值一样设置、获取、删除字典的键和值。
|
|
web.config 初始化的是一个storge对象
2.ThreadedDict类
在utils文件中定义,线程字典,线程安全的,该实例化对象存在于主线程中,但是其属性值 在每一个线程中是独立的
|
|
|
|
web.py 0.111中的实现。依赖于threading中的currentThread:(每个线程都必须用线程id作为键更新全局_context字典对象,以便线程根据自己的线程id访问/设置自己的属性)
|
|
附————
os.stat(mod.file).st_mtime os.stat()获取文件的相关属性
itertools.chain 分别迭代多个序列或迭代器对象,然后连接在一起转换成一个迭代器
sys._getframe(1).f_locals
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
for depth is zero, returning the frame at the top of the call stack.