From 8b1bb673c16c7503db9082a3afcafccfb832bc39 Mon Sep 17 00:00:00 2001 From: Job Evers-Meltzer Date: Wed, 5 Oct 2016 14:45:17 -0500 Subject: [PATCH] report available blobs --- lbrynet/analytics/constants.py | 4 +++- lbrynet/analytics/manager.py | 11 +++++++++++ lbrynet/lbrynet_daemon/Daemon.py | 7 ++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lbrynet/analytics/constants.py b/lbrynet/analytics/constants.py index 059efe921..dcc7b92b1 100644 --- a/lbrynet/analytics/constants.py +++ b/lbrynet/analytics/constants.py @@ -1,2 +1,4 @@ -# Constants for metrics +"""Constants for metrics""" + BLOB_BYTES_UPLOADED = 'blob_bytes_uploaded' +BLOB_BYTES_AVAILABLE = 'blob_bytes_available' diff --git a/lbrynet/analytics/manager.py b/lbrynet/analytics/manager.py index 60986c6e9..57d5bea1e 100644 --- a/lbrynet/analytics/manager.py +++ b/lbrynet/analytics/manager.py @@ -33,6 +33,11 @@ class Manager(object): event = self.events_generator.download_started(name, stream_info) self.analytics_api.track(event) + def register_repeating_metric(self, event_name, value_generator, frequency=300): + lcall = task.LoopingCall(self._send_repeating_metric, event_name, value_generator) + self.looping_call_manager.register_looping_call(event_name, lcall) + lcall.start(frequency) + def _send_heartbeat(self): heartbeat = self.events_generator.heartbeat() self.analytics_api.track(heartbeat) @@ -42,3 +47,9 @@ class Manager(object): if value > 0: event = self.events_generator.metric_observered(constants.BLOB_BYTES_UPLOADED, value) self.analytics_api.track(event) + + def _send_repeating_metric(self, event_name, value_generator): + should_send, value = value_generator() + if should_send: + event = self.events_generator.metric_observered(event_name, value) + self.analytics_api.track(event) diff --git a/lbrynet/lbrynet_daemon/Daemon.py b/lbrynet/lbrynet_daemon/Daemon.py index 8fc1c1653..87afe9c8a 100644 --- a/lbrynet/lbrynet_daemon/Daemon.py +++ b/lbrynet/lbrynet_daemon/Daemon.py @@ -185,7 +185,7 @@ class CheckRemoteVersions(object): return defer.fail(None) -def calculate_available_blob_sizes(blob_manager): +def calculate_available_blob_size(blob_manager): return sum(blob.length for blob in blob_manager.get_all_verified_blobs()) @@ -1021,6 +1021,11 @@ class Daemon(jsonrpc.JSONRPC): self.analytics_manager = analytics.Manager( analytics_api, events_generator, analytics.Track()) self.analytics_manager.start() + self.register_repeating_metric( + analytics.BLOB_BYTES_AVAILABLE, + lambda: calculate_available_blob_size(self.session.blob_manager), + frequency=300 + ) def _get_session(self): def get_default_data_rate():