Skip to content

Commit 0f9f482

Browse files
committed
finish aync update
Signed-off-by: Zen <[email protected]>
1 parent 6bdcd1b commit 0f9f482

File tree

3 files changed

+18
-16
lines changed

3 files changed

+18
-16
lines changed

src/prometheus_exporter/cached_exporter.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,19 @@ def read_config(self):
3434
if 'cache_life' in self.config:
3535
self.cache_life = self.config['cache_life']
3636

37-
def _get_metrics(self):
38-
return self._cached_metrics if hasattr(self, '_cached_metrics') else super()._get_metrics()
37+
async def _get_metrics(self):
38+
return self._cached_metrics if hasattr(self, '_cached_metrics') else await super()._get_metrics()
3939

40-
def get_metrics(self, label_filter={}):
40+
async def get_metrics(self, label_filter={}):
4141
""" Get metrics from the exporter, caching the result. """
4242
from time import time
4343
if not hasattr(self, '_cached_metrics') or time() - self._cache_time >= self.cache_life:
4444
self._cache_time = time()
45-
self._cached_metrics = super().get_metrics(label_filter=label_filter)
45+
self._cached_metrics = await super().get_metrics(label_filter=label_filter)
4646
else:
4747
self.logger.info("Returning cached metrics.")
4848
self.logger.debug("Cached metrics: %s", self._cached_metrics)
49-
return self.filter_metrics(label_filter=label_filter)
49+
return await self.filter_metrics(label_filter=label_filter)
5050

5151
CachedExporter.__name__ = f"Cached{cls.__name__}"
5252
CachedExporter.__module__ = cls.__module__

src/prometheus_exporter/exporter.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,10 @@ def start(self):
4747

4848
async def handle_metrics(self, request, *args, **kwargs):
4949
params = dict([p.split('=') for p in request.query_string.split('&')]) if request.query_string else {}
50-
self.logger.debug("Handling metrics request: %s", request)
51-
return Response(text=self.export(params))
50+
self.logger.info("[%s:%d] Handling metrics request: %s" % (self.host, self.port, request.query_string))
51+
response = Response(text=await self.export(params))
52+
self.logger.info("[%s] Sending response: <%d> Length: %d" % (request.remote, response.status, response.content_length))
53+
return response
5254

5355
def __setattr__(self, name, value):
5456
if name == 'labels' and not isinstance(value, Labels):
@@ -79,30 +81,30 @@ def add_config_metrics(self):
7981
self.logger.info("Adding metric: %s", name)
8082
self.metrics.append(Metric(name=name, **kwargs, **values))
8183

82-
def filter_metrics(self, label_filter={}):
84+
async def filter_metrics(self, label_filter={}):
8385
""" Filters metrics by label. """
84-
metrics = self._get_metrics().copy()
86+
metrics = await self._get_metrics()
8587
for metric in metrics:
86-
metrics = metric.labels.filter_metrics(metrics, label_filter)
88+
metrics = await metric.labels.filter_metrics(metrics, label_filter)
8789
return metrics
8890

8991
def get_labels(self):
9092
""" Gets a copy of the labels dict. """
9193
return self.labels.copy()
9294

93-
def _get_metrics(self):
95+
async def _get_metrics(self):
9496
""" Gets all defined metrics. """
9597
return self.metrics
9698

97-
def get_metrics(self, label_filter={}):
99+
async def get_metrics(self, label_filter={}):
98100
""" Gets all defined metrics, filtered by label_filter Can be overridden to use other methods."""
99-
return self.filter_metrics(label_filter)
101+
return await self.filter_metrics(label_filter)
100102

101-
def export(self, label_filter={}):
103+
async def export(self, label_filter={}):
102104
"""
103105
Gets metrics using self.get_metrics(), passing the label_filter.
104106
Turns them into a metric string for prometheus.
105107
"""
106-
metrics = self.get_metrics(label_filter)
108+
metrics = await self.get_metrics(label_filter)
107109
self.logger.debug("Exporting metrics: %s", metrics)
108110
return "\n".join([str(metric) for metric in metrics])

src/prometheus_exporter/labels.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def __init__(self, dict_items={}, **kwargs):
1818
""" Create a new Labels object from a dictionary """
1919
self.update(dict_items)
2020

21-
def filter_metrics(self, metrics, input_filter_dict={}):
21+
async def filter_metrics(self, metrics, input_filter_dict={}):
2222
""" Filter the metrics based on the labels in the filter_dict """
2323
filter_dict = input_filter_dict.copy()
2424
# First filter the filter, to remove any labels that are not defined

0 commit comments

Comments
 (0)