<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def stats_add_duration(self, key, duration):
 """Add a duration to the per-message measurements .. versionadded:: 3.19.0 .. note:: If this method is called when there is not a message being processed, a message will be logged at the ``warning`` level to indicate the value is being dropped. To suppress these warnings, set the :attr:`~rejected.consumer.Consumer.IGNORE_OOB_STATS` attribute to :data:`True`. :param key: The key to add the timing to :type key: :class:`str` :param duration: The timing value in seconds :type duration: :class:`int` or :class:`float` """

        if not self._measurement:
            if not self.IGNORE_OOB_STATS:
                self.logger.warning(
                    'stats_add_timing invoked outside execution')
            return
        self._measurement.add_duration(key, duration)