odoo.workflow.http

odoo源码解析-- <2>--启动类加载(5)
WSGI的主要处理方法

Root()

odoo源码解析-- <2>--启动类加载(5)
可以看见有两个被标记为延迟初始化(@lazy_property)的方法,延迟初始化是指,当它第一次被创建时才进行初始化,或者保留第一次创建的结果,然后每次调用的时候直接返回该结果。
1. __init__
odoo源码解析-- <2>--启动类加载(5)
Python中的__init__函数等同于类的构造器,作用就是创建一个实例。
( __del__等同于类的析构函数)
2. __call__
odoo源码解析-- <2>--启动类加载(5)
Python中的__call__函数能使实例像方法一样被调用,但是不影响实例本身的生命周期,但可以改变实例内部的值。
在这里__call__函数用于处理WSGI请求
3. dispatch() –handler请求分发
odoo源码解析-- <2>--启动类加载(5)

dispatch_rpc()

对于http XML-RPC请求,则由dispatch_rpc函数进行处理
odoo源码解析-- <2>--启动类加载(5)

OpenERPSession

Odoo中对Session的处理定义在http.py中,Session类就是OpenERPSession类
odoo源码解析-- <2>--启动类加载(5)
至于Session**什么时候被创建**呢?在Handler类(Root类)初始化的时候,创建一个空的session对象,该对象并没有具体的值:
odoo源码解析-- <2>--启动类加载(5)
当用户第一次登录或访问系统时,Root类的dispatch方法被调用时被创建:
odoo源码解析-- <2>--启动类加载(5)
1. setup_session()
odoo源码解析-- <2>--启动类加载(5)
那么,session被保存在什么地方呢?
Odoo的session不是保存在内存中,而是保存在磁盘中,通过odoo.tools.config.session_dir参数设置保存地址。
odoo源码解析-- <2>--启动类加载(5)
默认地址是本地应用数据目录。如我的默认存放地址为:
odoo源码解析-- <2>--启动类加载(5)
odoo源码解析-- <2>--启动类加载(5)
因此我们也可以改变odoo.tools.config.session_dir参数来改变session保存的地址,或保存到数据库中
另外session**保存的时间多长**呢?

session_gc()

Odoo对于session的保存,默认是一个星期,对于超过一周的session,session_gc函数会将其从文件夹移除:
odoo源码解析-- <2>--启动类加载(5)
因此,我们可以自定义时间,来改变sessio

相关文章:

  • 2021-07-25
  • 2021-11-07
  • 2021-07-16
  • 2021-11-11
  • 2021-05-12
  • 2021-12-06
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-05
  • 2021-12-25
  • 2021-09-12
  • 2021-08-12
  • 2021-07-18
  • 2021-08-01
  • 2021-12-26
相关资源
相似解决方案