def start(self, block_until_ready=True):
        """Starts children and then this service. By default it blocks until ready."""
        self.state("start")
        if self.start_before:
            self.do_start()
        for child in self._children:
            if child.state.current not in ["ready", "starting"]:
                child.start(block_until_ready)
        if not self.start_before:
            ready = not self.do_start()
            if not ready and block_until_ready is True:
                self.state.wait("ready", self.start_timeout)
            elif ready:
                self.state("ready")
        else:
            self.state("ready")
dataset/ETHPy150Open progrium/ginkgo/ginkgo/core.py/BasicService.start/original