在上一篇博客中,我大概介绍了odoo客户端的服务启动,本片博客中,我讲介绍服务端的服务启动。位于odoo.service.server
start方法
odoo服务和进程的开始
odoo.service.server.start():
- load_server_wide_modules() *
这个方法加载了两个模块:web和web_kanban- server
接下来可以看出odoo支持三种服务类型:
·GeventServer
·PreforkServer
·ThreadedServer(默认)
CommonServer是后面三个类的父类
Odoo服务器通过ThreadedServer.run()运行
- server
ThreadedServer(CommandServer)
- run()
启动http服务cron(Linux下的定时执行工具,承担计划任务,可以在无需人工干预的情况下运行作业)线程,然后等待信号
Run方法里首先调用了strat()方法 - start()
当第二个红色框的条件不满足时,会加载下一个if:
因此,在默认参数下,执行http_spawn() - http_spawn()
http_spawn()启动一个名为odoo.service.httpd的线程,并在控制台输出服务信息: - http_thread()
在http_thread线程中,将调用ThreadWSGIServerReloadable
到这里 odoo已经可以启动了
我把ThreadWSGIServerReloable的初始函数注释掉 它能启动
那这个类究竟是干嘛的呢?
ThreadWSGIServerReloadable
看它的说明可知
Werkzeug是Python的WSGI规范的实现函数库。基于BSD协议。
WSGI(Web Server Gateway Interface)
WSGI服务允许重用环境提供的监听套接字,它通过自动重加载使用,用于保持当有重加载的时候监听套接字是打开状态
####
该类继承了ThreadedWSGIServer,其中app参数:
为start方法中传递的
原因: