`

Open-erp8的启动过程

 
阅读更多

1、主程序 

openerp/cli/server.py

def main(args):

    check_root_user()  #检查 root 用户,如是 root 则不能运行

    openerp.tools.config.parse_config(args) #配置文件处理: openerp-server.conf

    check_postgres_user()  #检测 postgres 用户

    report_configuration() #报表配置

 

    config = openerp.tools.config

 

    if config["test_file"]:

        config["test_enable"] = True

 

    if config["translate_out"]:

        export_translation()

        sys.exit(0)

 

    if config["translate_in"]:

        import_translation()

        sys.exit(0)

 

    # This needs to be done now to ensure the use of the multiprocessing

    # signaling mecanism for registries loaded with -d

    if config['workers']:

        openerp.multi_process = True

 

    preload = []

    if config['db_name']:   #如果配置了 db_name 在配置文件 , 则加载对应的 erp-module

        preload = config['db_name'].split(',')

 

    stop = config["stop_after_init"]

 

    setup_pid_file()

    rc = openerp.service.server.start(preload=preload, stop=stop)  #启动 server 

    

    sys.exit(rc)

 

2、 web 模块

openerp.service.server.start(preload=preload, stop=stop)  #启动 server 

启动 web , ( httpd, MVC) 等 ,等待web服务

 

3、Server 模块

openerp/service/server.py

提供服务,包括: http request 处理 等

 

4、dao模块

sql_db.py

class Cursor(object): 用这个对象操作 数据库。 Cursor 在参数中一般写作  cr , 代表  transaction 。

 

5、log 模块

用 python 库, logging 。由 netsvr.py 模块初始化。

def init_logger():

 

用 log 跟踪 运行。

 

分享到:
评论
2 楼 白云天 2014-09-26  
openerp/service/server.py 中的 ThreadedServer 对象

def http_thread(self):
     def app(e, s):
        return self.app(e, s)
     self.httpd = ThreadedWSGIServerReloadable(self.interface, self.port, app)
     self.httpd.serve_forever()


启动了 http 服务。

1 楼 白云天 2014-09-26  
http.py 模块 中:
root = Root()
openerp.service.wsgi_server.register_wsgi_handler(root)

注册了 wsgi 的 处理类(保存在 module_handlers 列表 )

Root 类处理 所有模块的静态访问资源(web/static/res)

相关推荐

Global site tag (gtag.js) - Google Analytics