|
# retoor <retoor@molodetz.nl>
|
|
|
|
from dataclasses import dataclass, field
|
|
import threading
|
|
|
|
|
|
@dataclass
|
|
class RequestCounters:
|
|
requests: int = 0
|
|
errors: int = 0
|
|
_lock: threading.Lock = field(default_factory=threading.Lock, repr=False)
|
|
|
|
def record_request(self) -> None:
|
|
with self._lock:
|
|
self.requests += 1
|
|
|
|
def record_error(self) -> None:
|
|
with self._lock:
|
|
self.errors += 1
|
|
|
|
def snapshot(self) -> dict[str, int]:
|
|
with self._lock:
|
|
return {"requests": self.requests, "errors": self.errors}
|
|
|
|
|
|
COUNTERS = RequestCounters() |