kafka_metric.py 933 B

123456789101112131415161718192021222324252627282930313233343536
  1. from __future__ import absolute_import
  2. import time
  3. class KafkaMetric(object):
  4. # NOTE java constructor takes a lock instance
  5. def __init__(self, metric_name, measurable, config):
  6. if not metric_name:
  7. raise ValueError('metric_name must be non-empty')
  8. if not measurable:
  9. raise ValueError('measurable must be non-empty')
  10. self._metric_name = metric_name
  11. self._measurable = measurable
  12. self._config = config
  13. @property
  14. def metric_name(self):
  15. return self._metric_name
  16. @property
  17. def measurable(self):
  18. return self._measurable
  19. @property
  20. def config(self):
  21. return self._config
  22. @config.setter
  23. def config(self, config):
  24. self._config = config
  25. def value(self, time_ms=None):
  26. if time_ms is None:
  27. time_ms = time.time() * 1000
  28. return self.measurable.measure(self.config, time_ms)