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: Called when the state of one of the trials is changed
  
  Parameters
  ----------
  data: dict
      a dict with keys: trial_job_id, event, hyper_params.
      trial_job_id: the id generated by training service.
      event: the job’s state.
      hyper_params: the string that is sent by message dispatcher during the creation of trials.
docstr_tok: ["Called","when","the","state","of","one","of","the","trials","is","changed","Parameters","--","--","--","--","--","data",":","dict","a","dict","with","keys",":","trial_job_id",",","event",",","hyper_params",".","trial_job_id",":","the","id","generated","by","training","service",".","event",":","the","job","\u2019","s","state",".","hyper_params",":","the","string","that","is","sent","by","message","dispatcher","during","the","creation","of","trials","."]
code: def handle_trial_end(self, data):
      """Called when the state of one of the trials is changed
  
      Parameters
      ----------
      data: dict
          a dict with keys: trial_job_id, event, hyper_params.
          trial_job_id: the id generated by training service.
          event: the job’s state.
          hyper_params: the string that is sent by message dispatcher during the creation of trials.
  
      """
      raise NotImplementedError("handle_trial_end not implemented")
  
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 15 for calling the MsgDispatcherBase obj's underlying member method code with example usage: obj.handle_trial_end(data) without return types