docs: def stop(self, signum=None, _unused=None):
          """Stop the consumer from consuming by calling BasicCancel and setting
          our state.
  
          :param int signum: The signal received
          :param frame _unused: The stack frame from when the signal was called
  
          """
          LOGGER.debug('Stop called in state: %s', self.state_description)
          if self.is_stopped:
              LOGGER.warning('Stop requested but consumer is already stopped')
              return
          elif self.is_shutting_down:
              LOGGER.warning('Stop requested, consumer is already shutting down')
              return
          elif self.is_waiting_to_shutdown:
              LOGGER.warning('Stop requested but already waiting to shut down')
              return
  
          # Stop consuming and close AMQP connections
          self.shutdown_connections()
  
          # Wait until the consumer has finished processing to shutdown
          if self.is_processing:
              LOGGER.info('Waiting for consumer to finish processing')
              self.set_state(self.STATE_STOP_REQUESTED)
              if signum == signal.SIGTERM:
                  signal.siginterrupt(signal.SIGTERM, False)
              return