code: def poll(self, timeout=None):
          
          if timeout is None:
              timeout = -1
          message = super(AvroConsumer, self).poll(timeout)
          if message is None:
              return None
  
          if not message.error():
              try:
                  if message.value() is not None:
                      decoded_value = self._serializer.decode_message(message.value(), is_key=False)
                      message.set_value(decoded_value)
                  if message.key() is not None:
                      decoded_key = self._serializer.decode_message(message.key(), is_key=True)
                      message.set_key(decoded_key)
              except SerializerError as e:
                  raise SerializerError("Message deserialization failed for message at {} [{}] offset {}: {}".format(
                      message.topic(),
                      message.partition(),
                      message.offset(),
                      e))
          return message
docs: This is an overriden method from confluent_kafka.Consumer class. This handles message
          deserialization using avro schema
  
          :param float timeout: Poll timeout in seconds (default: indefinite)
          :returns: message object with deserialized key and value as dict objects
          :rtype: Message