code: def close(self, reply_code=0, reply_text='', method_sig=(0, 0)):
          
          if not self.is_open:
              # already closed
              return
  
          args = AMQPWriter()
          args.write_short(reply_code)
          args.write_shortstr(reply_text)
          args.write_short(method_sig[0]) # class_id
          args.write_short(method_sig[1]) # method_id
          self._send_method((20, 40), args)
          return self.wait(allowed_methods=[
                            (20, 41),    # Channel.close_ok
                          ])
docs: request a channel close
  
          This method indicates that the sender wants to close the
          channel. This may be due to internal conditions (e.g. a forced
          shut-down) or due to an error handling a specific method, i.e.
          an exception.  When a close is due to an exception, the sender
          provides the class and method id of the method which caused
          the exception.
  
          RULE:
  
              After sending this method any received method except
              Channel.Close-OK MUST be discarded.
  
          RULE:
  
              The peer sending this method MAY use a counter or timeout
              to detect failure of the other peer to respond correctly
              with Channel.Close-OK..
  
          PARAMETERS:
              reply_code: short
  
                  The reply code. The AMQ reply codes are defined in AMQ
                  RFC 011.
  
              reply_text: shortstr
  
                  The localised reply text.  This text can be logged as an
                  aid to resolving issues.
  
              class_id: short
  
                  failing method class
  
                  When the close is provoked by a method exception, this
                  is the class of the method.
  
              method_id: short
  
                  failing method ID
  
                  When the close is provoked by a method exception, this
                  is the ID of the method.