odoo.workflow.http
WSGI的主要处理方法
Root()
可以看见有两个被标记为延迟初始化(@lazy_property)的方法,延迟初始化是指,当它第一次被创建时才进行初始化,或者保留第一次创建的结果,然后每次调用的时候直接返回该结果。
1. __init__
Python中的__init__函数等同于类的构造器,作用就是创建一个实例。
( __del__等同于类的析构函数)
2. __call__
Python中的__call__函数能使实例像方法一样被调用,但是不影响实例本身的生命周期,但可以改变实例内部的值。
在这里__call__函数用于处理WSGI请求
3. dispatch() –handler请求分发
dispatch_rpc()
对于http XML-RPC请求,则由dispatch_rpc函数进行处理
OpenERPSession
Odoo中对Session的处理定义在http.py中,Session类就是OpenERPSession类
至于Session**什么时候被创建**呢?在Handler类(Root类)初始化的时候,创建一个空的session对象,该对象并没有具体的值:
当用户第一次登录或访问系统时,Root类的dispatch方法被调用时被创建:
1. setup_session()
那么,session被保存在什么地方呢?
Odoo的session不是保存在内存中,而是保存在磁盘中,通过odoo.tools.config.session_dir参数设置保存地址。
默认地址是本地应用数据目录。如我的默认存放地址为:
因此我们也可以改变odoo.tools.config.session_dir参数来改变session保存的地址,或保存到数据库中
另外session**保存的时间多长**呢?
session_gc()
Odoo对于session的保存,默认是一个星期,对于超过一周的session,session_gc函数会将其从文件夹移除:
因此,我们可以自定义时间,来改变sessio