code: def stop(self):
          
          if not self._consumers_ready.ready():
              _log.debug('stopping while consumer is starting %s', self)
  
              stop_exc = QueueConsumerStopped()
  
              # stopping before we have started successfully by brutally
              # killing the consumer thread as we don't have a way to hook
              # into the pre-consumption startup process
              self._gt.kill(stop_exc)
  
          self.wait_for_providers()
  
          try:
              _log.debug('waiting for consumer death %s', self)
              self._gt.wait()
          except QueueConsumerStopped:
              pass
  
          super(QueueConsumer, self).stop()
          _log.debug('stopped %s', self)
docs: Stop the queue-consumer gracefully.
  
          Wait until the last provider has been unregistered and for
          the ConsumerMixin's greenthread to exit (i.e. until all pending
          messages have been acked or requeued and all consumers stopped).