Check if the multi-environment has been fully initialized.

        This calls each slave environment managers' :py:meth:`is_ready` and
        checks if the multi-environment itself is ready by calling
        :py:meth:`~creamas.mp.MultiEnvironment.check_ready`.

        .. seealso::

            :py:meth:`creamas.core.environment.Environment.is_ready`

async def is_ready(self):
        """Check if the multi-environment has been fully initialized.

        This calls each slave environment managers' :py:meth:`is_ready` and
        checks if the multi-environment itself is ready by calling
        :py:meth:`~creamas.mp.MultiEnvironment.check_ready`.

        .. seealso::

            :py:meth:`creamas.core.environment.Environment.is_ready`
        """
        async def slave_task(addr, timeout):
            try:
                r_manager = await self.env.connect(addr, timeout=timeout)
                ready = await r_manager.is_ready()
                if not ready:
                    return False
            except:
                return False
            return True

        if not self.env.is_ready():
            return False
        if not self.check_ready():
            return False
        rets = await create_tasks(slave_task, self.addrs, 0.5)
        if not all(rets):
            return False
        return True