metric_config.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. from __future__ import absolute_import
  2. import sys
  3. class MetricConfig(object):
  4. """Configuration values for metrics"""
  5. def __init__(self, quota=None, samples=2, event_window=sys.maxsize,
  6. time_window_ms=30 * 1000, tags=None):
  7. """
  8. Arguments:
  9. quota (Quota, optional): Upper or lower bound of a value.
  10. samples (int, optional): Max number of samples kept per metric.
  11. event_window (int, optional): Max number of values per sample.
  12. time_window_ms (int, optional): Max age of an individual sample.
  13. tags (dict of {str: str}, optional): Tags for each metric.
  14. """
  15. self.quota = quota
  16. self._samples = samples
  17. self.event_window = event_window
  18. self.time_window_ms = time_window_ms
  19. # tags should be OrderedDict (not supported in py26)
  20. self.tags = tags if tags else {}
  21. @property
  22. def samples(self):
  23. return self._samples
  24. @samples.setter
  25. def samples(self, value):
  26. if value < 1:
  27. raise ValueError('The number of samples must be at least 1.')
  28. self._samples = value