您的位置:首页 > 其它

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

2018-01-11 21:45 211 查看
在上一篇博客中,我大概介绍了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()运行



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方法中传递的



原因:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  odoo源码 源码