def run(self):
self._load_config()
for service in self.config.iter_instances("service", "Service"):
self._start_service(service)
listen = self.config.raw_data[0]["core"]["listen"]
self.http = HTTP(self.loop, listen)
self.http.add_route("*", r"/{dir:.*}", self._http_handler)
for prov in self.config.iter_providers():
self.providers[prov.name] = prov
yield from prov.start()
yield from self.http.start()
reload_fut = asyncio.async(self.reload(), loop=self.loop)
yield from self.stop_event.wait()
self.log.info("Interrupted.")
reload_fut.cancel()
yield from reload_fut
for obj in self._running_objects:
obj.cancel()
yield from asyncio.wait(self._running_objects,
return_when=futures.ALL_COMPLETED)
if self._running_cleanups:
yield from asyncio.wait(self._running_cleanups,
return_when=futures.ALL_COMPLETED)
for provider in self.providers.values():
yield from prov.stop()
self.http.stop()
yield from self.http.wait_closed()
self.log.info("Exit.")
评论列表
文章目录