class_docstr: This publisher will handle failures and closures and will
  attempt to restart things
  
  delivery confirmations are used to track messages that have
  been sent and if they have been confirmed
docstr: on any close reconnect to RabbitMQ, until the stopping is set
  
  :param pika.connection.Connection connection: The closed connection obj
  :param Exception reason: why the connection was closed
docstr_tok: ["on","any","close","reconnect","to","RabbitMQ",",","until","the","stopping","is","set",":","param","pika.connection.Connection","connection",":","The","closed","connection","obj",":","param","Exception","reason",":","why","the","connection","was","closed"]
code: def _on_connection_closed(self, connection, reason):
      """
      on any close reconnect to RabbitMQ, until the stopping is set
  
      :param pika.connection.Connection connection: The closed connection obj
      :param Exception reason: why the connection was closed
  
      """
      _ = connection
      self._logger.info(
          "connection to queue %s closed. Reason: %s",
          self._queue,
          repr(reason),
      )
      with self._rmq_lock:
          if self._stopping:
              self._connection.ioloop.stop()
          else:
              retry_timeout = 3
              # retry in retry_timeout seconds
              self._logger.info(
                  "connection closed, retry in %s seconds: %s",
                  retry_timeout,
                  repr(reason),
              )
              self._connection.ioloop.call_later(
                  retry_timeout, self._reconnect
              )
  
imports: import time
  import threading
  import pika
  from studio.storage.storage_setup import get_storage_verbose_level
  from studio.util import logs
label_desc: Use image node_id 12 for calling the RMQueue obj's underlying member method code with example usage: obj._on_connection_closed(connection, reason) without return types