2024年2月29日发(作者:笔记本评测权威网站)
NOVA-API服务的启动流程
1. -api
1. t_flagfile()
获取配置文件路径,并将其放入环境变量中。
2. ())
调用FlagValues的__call(self,argv)函数,对进行“getopt”处理。(详见Nova-Flags分析)
3. ()
进行nova-api的日志设置。(详见Nova-Logging分析)
4. _patch()
该函数中根据monkey_patch宏来确定是否载入相应模块,默认为false
5. servers = []
for api in d_apis:
(rvice(api))
调用WSGIService初始化(ec2', 'osapi两个服务)server。(详见2.1节)
6. (*servers)
()启动服务.(详见2.2)
2. e
1. WSGIService.__init__()函数
a. = name
为'ec2'或'osapi'
b. = loader or ()
创建一个loader实例,用来装载配置文件。(详见3.1)
c. = _app(name)
利用第三方软件载入配置文件中指定的name应用。(详见3.2)
d. = getattr(FLAGS, '%s_listen' % name, "0.0.0.0")
从标记中获取主机的地址
e. = getattr(FLAGS, '%s_listen_port' % name,
0)#ec2=8773,osapi=8774
从标记中获取服务端口的地址
f. = (name, , host=,
port=)
利用上面获得参数创建一个wsgi服务实例。(详见3.3)
2. serve()函数
a. _launcher = Launcher()
创建一个Launcher实例。该实例用来创建eventlet线程池并启动服务。
b. __server(server)
线程池中启动服务server,并最终调用server的strart()函数启动服务。即启动wsgi服务实例的start()函数。(详见3.5)
3.
1. Loader.__init__()
a. config_path = config_path or _paste_config
_path = self._find_config(config_path)
从标记中获取配置文件的名字,并利用_find_config函数找到该文件所在的路径保存到_path中。
3. _app
a. return p("config:%s" % _path,
name=name)
利用第三方库载入配置文件指定的app。
4. Server.__init__()
a. 该函数仅仅初始化参数,配置日志等参数,实例化该类。
5. (self, backlog=128)
a. self._socket = ((, ),
backlog=backlog)
利用创建一个socket监听宿主机的端口。
b. self._server = (self._start)
线程池中调用Server._start()函数启动服务。详见(3.6)
6. Server._start()
a. (self._socket, ,
custom_pool=self._pool, log=self._wsgi_logger)
利用函数启动wsgi服务监听宿主机的端口号。直到该服务退出,利用()函数回收资源。
发布者:admin,转转请注明出处:http://www.yc00.com/num/1709142706a1605527.html
评论列表(0条)