odoo源码解析-- --启动类加载(4)

时间:2022-06-13 17:19:51

前3个博客向大家介绍了odoo从启动到可以运行的大致流程,接下来两篇博客接着前面的探讨启动之后还有什么工作。
接着之前的地方进行分析,我们查看到odoo.server.wsgi_server这个文件

odoo.server.wsgi_server

该文件定义了odoo的Web Container
入口函数为def application(environ,start_response)
1. Application ()
odoo源码解析-- --启动类加载(4)
通过判断在config中是否是否定义proxy_mode和环境中是否有HTTP_X_FORWARDED_HOST头信息,来判断是否代理请求,从而进行相应的处理
默认参数下,调用application_unproxied()
2. application_unproxied()
清除数据库和用户的追踪
清除动作在application方法的结尾不能完成,因为werkzeu在后面还会生成有关的日志。
odoo源码解析-- --启动类加载(4)
该函数查找合适的回调函数对HTTP访问进行处理。回调函数来源两个部分:
- wsgi_xmlrpc
- module_handlers
odoo源码解析-- --启动类加载(4)
使用with语句,不管在查找过程中是否发生了异常,都能保证with语句执行完毕并有默认处理方式(类似于try/catch语)
其中module_handlers是WSGI的回调函数列表,系统在执行import odoo时已经将Root类添加到了WSGI回调函数表中。见下一篇博客介绍
odoo源码解析-- --启动类加载(4)
添加代码,将result输出
odoo源码解析-- --启动类加载(4)
得到的result有:
werkzeug.wsgi.FileWrapper object
werkzeug.wsgi.ClosingIterator object

后面的这几句话不会运行
odoo源码解析-- --启动类加载(4)