class_docstr: Base class for Requests and Replies.
  
  All subclasses must accept keyword arguments to __init__() corresponding to
  their attributes.
code: def recv(cls, socket, routed=False):
      message = socket.recv_multipart()
      if routed:
          split = message.index(b"") + 1
          routing = message[:split]
          message = message[split:]
      else:
          routing = []
      module, classname = message[:2]
      module = module.decode("unicode_escape")
      classname = classname.decode("unicode_escape")
      buffers = message[3:]
      attribute_dict = cellprofiler_core.utilities.zmq.json_decode(
          message[2], buffers
      )
      try:
          instance = sys.modules[module].__dict__[classname](
              **attribute_dict
          )
      except:
          print(
              "Communicable could not instantiate %s from module %s with kwargs %s"
              % (module, classname, attribute_dict)
          )
          raise
      instance._remote = True
      instance._routing = routing
      instance._socket = socket
      instance._replied = False
      return instance
  
imports: import sys
  import cellprofiler_core.utilities.zmq
label_desc: Use image node_id 2 for calling the Communicable obj's underlying member method code with example usage: obj.recv(cls, socket, routed) and returns: instance