Skip to content

Commit 0203d17

Browse files
Merge pull request #5 from RefaceAI/add-lock
Add lock for observe and query (#4)
2 parents c06420a + 7be6254 commit 0203d17

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

prometheus_summary/__init__.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from threading import Lock
12
from typing import Iterable, Sequence, Optional, Tuple
23

34
import prometheus_client
@@ -28,6 +29,7 @@ def __init__(
2829
self._invariants = invariants
2930
self._max_age_seconds = max_age_seconds
3031
self._age_buckets = age_buckets
32+
self._lock = Lock()
3133
super().__init__(
3234
name,
3335
documentation,
@@ -53,12 +55,15 @@ def observe(self, amount):
5355

5456
amount = float(amount)
5557
super().observe(amount)
56-
self._estimator.observe(amount)
58+
with self._lock:
59+
self._estimator.observe(amount)
5760

5861
def _child_samples(self):
59-
default_samples = super()._child_samples()
60-
quantile_samples = tuple(
61-
Sample("", {"quantile": str(quantile)}, self._estimator.query(quantile), None, None)
62-
for quantile, _ in self._invariants
63-
)
64-
return [*default_samples, *quantile_samples]
62+
with self._lock:
63+
samples = [
64+
Sample("", {"quantile": str(quantile)}, self._estimator.query(quantile), None, None)
65+
for quantile, _ in self._invariants
66+
]
67+
68+
samples.extend(super()._child_samples())
69+
return samples

0 commit comments

Comments
 (0)