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