class_docstr: This is where tuners and assessors are not defined yet.
  Inherits this class to make your own advisor.
  
  .. note::
  
      The class inheriting MsgDispatcherBase should be instantiated
      after nnimanager (rest server) is started, so that the object
      is ready to use right after its instantiation.
class_docstr_tok: ["This","is","where","tuners","and","assessors","are","not","defined","yet",".","Inherits","this","class","to","make","your","own","advisor",".","..","note",":",":","The","class","inheriting","MsgDispatcherBase","should","be","instantiated","after","nnimanager","(","rest","server",")","is","started",",","so","that","the","object","is","ready","to","use","right","after","its","instantiation","."]
docstr: Enqueue command into command queues
          
docstr_tok: ["Enqueue","command","into","command","queues"]
code: def enqueue_command(self, command, data):
      """Enqueue command into command queues"""
      if command == CommandType.TrialEnd or (
          command == CommandType.ReportMetricData
          and data["type"] == "PERIODICAL"
      ):
          self.assessor_command_queue.put((command, data))
      else:
          self.default_command_queue.put((command, data))
  
      qsize = self.default_command_queue.qsize()
      if qsize >= QUEUE_LEN_WARNING_MARK:
          _logger.warning("default queue length: %d", qsize)
  
      qsize = self.assessor_command_queue.qsize()
      if qsize >= QUEUE_LEN_WARNING_MARK:
          _logger.warning("assessor queue length: %d", qsize)
  
imports: import threading
  import logging
  from queue import Queue, Empty
  from .env_vars import dispatcher_env_vars
  from ..common import load
  from ..recoverable import Recoverable
  from .tuner_command_channel import CommandType, TunerCommandChannel
label_desc: Use image node_id 6 for calling the MsgDispatcherBase obj's underlying member method code with example usage: obj.enqueue_command(command, data) without return types