def __init__(self, default_config=None, reporters=None,
                 enable_expiration=False):
        """
        Create a metrics repository with a default config, given metric
        reporters and the ability to expire eligible sensors

        Arguments:
            default_config (MetricConfig, optional): The default config
            reporters (list of AbstractMetricsReporter, optional):
                The metrics reporters
            enable_expiration (bool, optional): true if the metrics instance
                can garbage collect inactive sensors, false otherwise
        """
        self._lock = threading.RLock()
        self._config = default_config or MetricConfig()
        self._sensors = {}
        self._metrics = {}
        self._children_sensors = {}
        self._reporters = reporters or []
        for reporter in self._reporters:
            reporter.init([])

        if enable_expiration:
            def expire_loop():
                while True:
                    # delay 30 seconds
                    time.sleep(30)
                    self.ExpireSensorTask.run(self)
            metrics_scheduler = threading.Thread(target=expire_loop)
            # Creating a daemon thread to not block shutdown
            metrics_scheduler.daemon = True
            metrics_scheduler.start()

        self.add_metric(self.metric_name('count', 'kafka-metrics-count',
                                         'total number of registered metrics'),
                        AnonMeasurable(lambda config, now: len(self._metrics)))
def __init__ ( self , default_config = None , reporters = None , enable_expiration = False ) : self . _lock = threading . RLock ( ) self . _config = default_config or MetricConfig ( ) self . _sensors = { } self . _metrics = { } self . _children_sensors = { } self . _reporters = reporters or [ ] for reporter in self . _reporters : reporter . init ( [ ] ) if enable_expiration : def expire_loop ( ) : while True : time . sleep ( 30 ) self . ExpireSensorTask . run ( self ) metrics_scheduler = threading . Thread ( target = expire_loop ) metrics_scheduler . daemon = True metrics_scheduler . start ( ) self . add_metric ( self . metric_name ( 'count' , 'kafka-metrics-count' , 'total number of registered metrics' ) , AnonMeasurable ( lambda config , now : len ( self . _metrics ) ) )
Create a metrics repository with a default config, given metric
        reporters and the ability to expire eligible sensors

        Arguments:
            default_config (MetricConfig, optional): The default config
            reporters (list of AbstractMetricsReporter, optional):
                The metrics reporters
            enable_expiration (bool, optional): true if the metrics instance
                can garbage collect inactive sensors, false otherwise