File: collectors.py

package info (click to toggle)
python-aiomeasures 0.5.14-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 672 kB
  • sloc: python: 5,173; makefile: 159
file content (28 lines) | stat: -rw-r--r-- 822 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from collections import deque
from aiomeasures.events import Event


class Collector(deque):
    """Caped list of metrics
    """

    def flush(self, rate=None, formatter=None):
        while True:
            try:
                metric = self.popleft()
                if isinstance(metric, Event):
                    yield formatter(metric)
                    continue
                if metric.value is None:
                    continue
                if rate and metric.rate and rate < metric.rate:
                    continue
                if formatter:
                    try:
                        yield formatter(metric)
                    except ValueError:
                        continue
                else:
                    yield metric
            except IndexError:
                return