code: def basic_cancel(self, consumer_tag, nowait=False):
          
          if self.connection is not None:
              self.no_ack_consumers.discard(consumer_tag)
              args = AMQPWriter()
              args.write_shortstr(consumer_tag)
              args.write_bit(nowait)
              self._send_method((60, 30), args)
              return self.wait(allowed_methods=[
                  (60, 31),  # Channel.basic_cancel_ok
              ])
docs: End a queue consumer
  
          This method cancels a consumer. This does not affect already
          delivered messages, but it does mean the server will not send
          any more messages for that consumer.  The client may receive
          an abitrary number of messages in between sending the cancel
          method and receiving the cancel-ok reply.
  
          RULE:
  
              If the queue no longer exists when the client sends a
              cancel command, or the consumer has been cancelled for
              other reasons, this command has no effect.
  
          PARAMETERS:
              consumer_tag: shortstr
  
                  consumer tag
  
                  Identifier for the consumer, valid within the current
                  connection.
  
                  RULE:
  
                      The consumer tag is valid only within the channel
                      from which the consumer was created. I.e. a client
                      MUST NOT create a consumer in one channel and then
                      use it in another.
  
              nowait: boolean
  
                  do not send a reply method
  
                  If set, the server will not respond to the method. The
                  client should not wait for a reply method.  If the
                  server could not complete the method it will raise a
                  channel or connection exception.