在上一篇博客中,我大概介绍了odoo客户端的服务启动,本片博客中,我讲介绍服务端的服务启动。位于odoo.service.server

start方法

odoo服务和进程的开始
odoo.service.server.start():
odoo源码解析-- <2>--启动类加载(3)

  1. load_server_wide_modules() *
    这个方法加载了两个模块:web和web_kanban
    1. server
      接下来可以看出odoo支持三种服务类型:
      ·GeventServer
      ·PreforkServer
      ·ThreadedServer(默认)
      odoo源码解析-- <2>--启动类加载(3)
      CommonServer是后面三个类的父类
      Odoo服务器通过ThreadedServer.run()运行
      odoo源码解析-- <2>--启动类加载(3)

ThreadedServer(CommandServer)

  1. run()
    启动http服务cron(Linux下的定时执行工具,承担计划任务,可以在无需人工干预的情况下运行作业)线程,然后等待信号
    Run方法里首先调用了strat()方法
    odoo源码解析-- <2>--启动类加载(3)
  2. start()
    odoo源码解析-- <2>--启动类加载(3)
    当第二个红色框的条件不满足时,会加载下一个if:
    odoo源码解析-- <2>--启动类加载(3)
    因此,在默认参数下,执行http_spawn()
  3. http_spawn()
    odoo源码解析-- <2>--启动类加载(3)
    http_spawn()启动一个名为odoo.service.httpd的线程,并在控制台输出服务信息:
    odoo源码解析-- <2>--启动类加载(3)
  4. http_thread()
    odoo源码解析-- <2>--启动类加载(3)
    在http_thread线程中,将调用ThreadWSGIServerReloadable

到这里 odoo已经可以启动了
我把ThreadWSGIServerReloable的初始函数注释掉 它能启动
odoo源码解析-- <2>--启动类加载(3)
那这个类究竟是干嘛的呢?

ThreadWSGIServerReloadable

看它的说明可知
Werkzeug是Python的WSGI规范的实现函数库。基于BSD协议。
WSGI(Web Server Gateway Interface)
WSGI服务允许重用环境提供的监听套接字,它通过自动重加载使用,用于保持当有重加载的时候监听套接字是打开状态
odoo源码解析-- <2>--启动类加载(3)
####
该类继承了ThreadedWSGIServer,其中app参数:
odoo源码解析-- <2>--启动类加载(3)
为start方法中传递的
odoo源码解析-- <2>--启动类加载(3)
原因:
odoo源码解析-- <2>--启动类加载(3)

相关文章:

  • 2021-08-01
  • 2021-12-26
  • 2021-07-25
  • 2021-11-07
  • 2021-07-16
  • 2021-11-11
  • 2021-12-06
  • 2022-12-23
猜你喜欢
  • 2021-06-05
  • 2021-12-25
  • 2021-06-20
  • 2021-09-12
  • 2021-07-18
  • 2021-06-20
  • 2021-11-29
相关资源
相似解决方案