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

上一篇博客写到odoo启动类使用的默认指令为server。现在我们接着对odoo.cli.server分析

server类

  1. run方法
    该run方法就是odoo客户端服务的开始
    odoo源码解析-- --启动类加载(2)_第1张图片
    其中调用了main方法

main 方法

main方法中调用了几个方法:
odoo源码解析-- --启动类加载(2)_第2张图片
1. Check_root_user()
判断是否为POSIX系统中的root用户—–>(false,因此该判断没有生效)
odoo源码解析-- --启动类加载(2)_第3张图片
如果是的话 则判断当前用户是否为root,因为使用系统用户root作为odoo的user是一个不安全的做法。
2. Parse_config(args)
解析配置文件和命令行参数,这里是将所有的命令添加到Python包里
odoo源码解析-- --启动类加载(2)_第4张图片
该方法所属的类为odoo.tools.config.configmanager。
该类的初始化方法完成对命令的定义并添加这些命令到Python中,并生成默认的配置。
(1) _parse_config(args)
首先调用了_parse_config(args) 该方法后调用了多次die函数,未截图
odoo源码解析-- --启动类加载(2)_第5张图片
此时args不为none
self.parser.parse_args(args)是一个长度为2的元祖,这个语句分别将第一个和第二个值赋值为opt,args。
(2) init_logger()
这个方法根据不同的config项和不同的操作系统初始化了日志
(3) initializa_sys_path()
设立一个’import-hook’,用于可以从不同的路径导入插件
3. Check_postgres_user()
如果配置的数据库用户是postgres,就退出
odoo源码解析-- --启动类加载(2)_第6张图片
4. Report_configuration()
日志输出 odoo的版本,配置文件路径,插件路径,数据库信息(user,host,port);该方法假定配置已被初始化:
odoo源码解析-- --启动类加载(2)_第7张图片
调用完这四个方法后面是4个判断,一个都没有跳进去
(1). 检查config中的db_name,尝试创建名为db_name的数据库,如果已经存在,就pass.
这里写图片描述
(2). 检查translate_in和translate_out
这里写图片描述这里写图片描述
(3). 检查有多少个worker
这里写图片描述
因为在配置命令行参数的时候(此时为启动服务,所以不会有任何配置)将这些参数的默认值设为了false/为设置默认(none)/判断不成立:
这在创建数据库的时候用到:
这里写图片描述
这两个在加载翻译的时候用到:
这里写图片描述
这在系统为posix的前提下,将multi_process改为true,当它为true时,进程必须和事件交互,如数据库更新或缓存失效。每一个进程也有属于自己的数据结构副本,并且不必关心线程锁。
odoo源码解析-- --启动类加载(2)_第8张图片
5. setup_pid_file()
随后调用setup_pid_file():使用进程id创建一个文件,此时config[‘pidfile’]和odoo.evented都为false
odoo源码解析-- --启动类加载(2)_第9张图片
然后通过odoo.service.server.start()启动odoo服务器
这里写图片描述

你可能感兴趣的:(odoo源码)