[feat] add observability runtime
This commit is contained in:
parent
cb4560db5c
commit
741e63e978
5 changed files with 335 additions and 0 deletions
28
adapter/observability/runtime.py
Normal file
28
adapter/observability/runtime.py
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue