[feat] add observability runtime

This commit is contained in:
Azamat 2026-03-20 21:38:42 +03:00
parent cb4560db5c
commit 741e63e978
5 changed files with 335 additions and 0 deletions

View file

@ -0,0 +1,28 @@
from collections.abc import Callable
from dataclasses import dataclass, field
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.trace import TracerProvider
from usecase.interface import Logger, Metrics, Tracer
@dataclass(slots=True)
class ObservabilityRuntime:
logger: Logger
metrics: Metrics
tracer: Tracer
meter_provider: MeterProvider | None = None
tracer_provider: TracerProvider | None = None
_shutdown_callbacks: tuple[Callable[[], None], ...] = ()
_is_shutdown: bool = field(default=False, init=False, repr=False)
def shutdown(self) -> None:
if self._is_shutdown:
return
try:
for callback in self._shutdown_callbacks:
callback()
finally:
self._is_shutdown = True