class_docstr: A process that accepts incoming requests to experts and submits them into the corresponding TaskPool.
  
  :note: ConnectionHandler is designed so as to allow using multiple handler processes for the same port
  :param dht: a running hivemind.dht.DHT, used to let other peers connect to this one
  :param module_backends: a dict [UID -> ModuleBackend] with all active experts
code: def wait_until_ready(self, timeout: Optional[float] = None) -> None:
      self.ready.result(timeout=timeout)
  
imports: import asyncio
  import multiprocessing
  from typing import AsyncIterator, Dict, Iterable, List, Optional, Tuple, Union
  import torch
  from hivemind.compression import deserialize_tensor_stream, deserialize_torch_tensor, serialize_torch_tensor
  from hivemind.dht import DHT
  from hivemind.moe.server.module_backend import ModuleBackend
  from hivemind.moe.server.task_pool import TaskPool
  from hivemind.p2p import P2PContext, ServicerBase
  from hivemind.p2p.p2p_daemon import DEFAULT_MAX_MSG_SIZE, P2P
  from hivemind.proto import runtime_pb2
  from hivemind.utils import MPFuture, MSGPackSerializer, as_aiter, get_logger, nested_flatten
  from hivemind.utils.asyncio import amap_in_executor, switch_to_uvloop
  from hivemind.utils.streaming import split_for_streaming
  from hivemind.utils.tensor_descr import BatchTensorDescriptor
label_desc: Use image node_id 4 for calling the ConnectionHandler obj's underlying member method code with example usage: obj.wait_until_ready(timeout) without return types