class_docstr: Wraps any observer and puts processing of events in the background.
  
  If the covered observer fails to process an event, the queue observer
  will retry until it works. This is useful for observers that rely on
  external services like databases that might become temporarily
  unavailable.
docstr: Empty the queue every interval.
docstr_tok: ["Empty","the","queue","every","interval","."]
code: def _run(self):
      """Empty the queue every interval."""
      while not self._queue.empty():
          try:
              event = self._queue.get()
          except IndexError:
              # Currently there is no event on the queue so
              # just go back to sleep.
              pass
          else:
              try:
                  method = getattr(self._covered_observer, event.name)
              except NameError:
                  # The covered observer does not implement an event handler
                  # for the event, so just discard the message.
                  self._queue.task_done()
              else:
                  while True:
                      try:
                          method(*event.args, **event.kwargs)
                      except:
                          # Something went wrong during the processing of
                          # the event so wait for some time and
                          # then try again.
                          logger.debug(
                              "Error while processing event. Trying again.\n{}".format(
                                  traceback.format_exc()
                              )
                          )
                          # logging.debug(f"""Error while processing event. Trying again.
                          # {traceback.format_exc()}""")
  
                          self._stop_worker_event.wait(
                              self._retry_interval
                          )
                          continue
                      else:
                          self._queue.task_done()
                          break
  
imports: from collections import namedtuple
  from queue import Queue
  from sacred.observers.base import RunObserver
  from sacred.utils import IntervalTimer
  import traceback
  import logging
label_desc: Use image node_id 11 for calling the QueueObserver obj's underlying member method code with example usage: obj._run() without return types