code: def encode_record_with_schema_id(self, schema_id, record, is_key=False):
          
          serialize_err = KeySerializerError if is_key else ValueSerializerError
  
          # use slow avro
          if schema_id not in self.id_to_writers:
              # get the writer + schema
  
              try:
                  schema = self.registry_client.get_by_id(schema_id)
                  if not schema:
                      raise serialize_err("Schema does not exist")
                  self.id_to_writers[schema_id] = self._get_encoder_func(schema)
              except ClientError:
                  exc_type, exc_value, exc_traceback = sys.exc_info()
                  raise serialize_err(repr(traceback.format_exception(exc_type, exc_value, exc_traceback)))
  
          # get the writer
          writer = self.id_to_writers[schema_id]
          with ContextStringIO() as outf:
              # Write the magic byte and schema ID in network byte order (big endian)
              outf.write(struct.pack('>bI', MAGIC_BYTE, schema_id))
  
              # write the record to the rest of the buffer
              writer(record, outf)
  
              return outf.getvalue()
docs: Encode a record with a given schema id.  The record must
          be a python dictionary.
          :param int schema_id: integer ID
          :param dict record: An object to serialize
          :param bool is_key: If the record is a key
          :returns: decoder function
          :rtype: func