def _wait_for_child_port(self, port=None, timeout=60):
        """Waits for any child process of this service to bind to a TCP port.

        Args:
            port (None): if specified, wait for a child to bind to this port
            timeout (60): the number of seconds to wait before failing

        Returns:
            the port the child has bound to (equal to the ``port`` argument
            if specified)

        Raises:
            ServiceListenTimeout: if the timeout was exceeded
        """

        @retry(
            wait_fixed=250,
            stop_max_delay=1000 * timeout,
            retry_on_exception=lambda e: isinstance(e, ServiceListenTimeout),
        )
        def find_port():
            for child in fosu.normalize_wrapper_process(self.child).children(
                recursive=True
            ):
                try:
                    for local_port in fosu.get_listening_tcp_ports(child):
                        if port is None or port == local_port:
                            return local_port

                except psutil.Error:
                    pass

            raise ServiceListenTimeout(etau.get_class_name(self), port)

        return find_port()
Waits for any child process of this service to bind to a TCP port.

        Args:
            port (None): if specified, wait for a child to bind to this port
            timeout (60): the number of seconds to wait before failing

        Returns:
            the port the child has bound to (equal to the ``port`` argument
            if specified)

        Raises:
            ServiceListenTimeout: if the timeout was exceeded
        
fiftyone/core/service.py