code: def begin(self, transaction=None, headers=None, **keyword_headers):
          
          headers = utils.merge_headers([headers, keyword_headers])
          if not transaction:
              transaction = utils.get_uuid()
          headers[HDR_TRANSACTION] = transaction
          self.send_frame(CMD_BEGIN, headers)
          return transaction
docs: Begin a transaction.
  
          :param str transaction: the identifier for the transaction (optional - if not specified
              a unique transaction id will be generated)
          :param dict headers: a map of any additional headers the broker requires
          :param keyword_headers: any additional headers the broker requires
  
          :return: the transaction id
          :rtype: str