class_docstr: The server maintains the port and hands off the requests to workers
  
  example of use:
  
  context = zmq.Context()
  with KnimeBridgeServer(
      context,
      "tcp://127.0.0.1:4000", # server address
      "inproc://Notify        # kill notify address
      ) as server:
      notify_socket = context.socket(zmq.PUB)
      notify_socket.bind("inproc://Notify")
      ....
      notify_socket.send("Stop")
class_docstr_tok: ["The","server","maintains","the","port","and","hands","off","the","requests","to","workers","example","of","use",":","context","=","zmq.Context","(",")","with","KnimeBridgeServer","(","context",",","``","tcp",":","\/\/127.0.0.1:4000","''",",","#","server","address","``","inproc",":","\/\/Notify","#","kill","notify","address",")","as","server",":","notify_socket","=","context.socket","(","zmq.PUB",")","notify_socket.bind","(","``","inproc",":","\/\/Notify","''",")","....","notify_socket.send","(","``","Stop","''",")"]
code: def __init__(
      self, context, address, notify_address, notify_stop, **kwargs
  ):
      super(KnimeBridgeServer, self).__init__(**kwargs)
      self.setDaemon(True)
      self.setName("Knime bridge server")
      self.address = address
      self.context = context
      self.notify_addr = notify_address
      self.stop_msg = notify_stop
      self.dispatch = {
          CONNECT_REQ_1: self.connect,
          CLEAN_PIPELINE_REQ_1: self.clean_pipeline,
          PIPELINE_INFO_REQ_1: self.pipeline_info,
          RUN_REQ_1: self.run_request,
          RUN_GROUP_REQ_1: self.run_group_request,
      }
      self.start_addr = "inproc://" + uuid.uuid4().hex
      self.start_socket = context.socket(zmq.PAIR)
      self.start_socket.bind(self.start_addr)
  
imports: import json
  import logging
  import threading
  import uuid
  from io import StringIO
  import numpy
  import zmq
  from cellprofiler_core.constants.measurement import GROUP_NUMBER, GROUP_INDEX, OBJECT_NUMBER, EXPERIMENT, MCA_AVAILABLE_POST_RUN, COLTYPE_FLOAT, COLTYPE_INTEGER, COLTYPE_VARCHAR, IMAGE_NUMBER
  from cellprofiler_core.constants.workspace import DISPOSITION_SKIP, DISPOSITION_CANCEL
  from cellprofiler_core.image import Image
  from cellprofiler_core.measurement import Measurements
  from cellprofiler_core.module import Module
  from cellprofiler_core.setting.text import ImageName
  import cellprofiler_core.object
  import cellprofiler_core.pipeline
  import cellprofiler_core.workspace
label_desc: Use image node_id 1 to create a new KnimeBridgeServer object from inherited base classes: threading with example: obj = KnimeBridgeServer(context, address, notify_address, notify_stop)