quranic-universal-aligner / src /core /request_stats.py
hetchyy's picture
deploy
472bb49 verified
Raw
History Blame Contribute Delete
1.18 kB
"""Per-request pipeline stat stashes — lease / CPU-subprocess / worker-dispatch.
One RequestStats object per request: pipeline entries call
``reset_request_stats()`` once, the GPU/CPU dispatch layers each fill their
slot, and the log-row builder reads the whole object at build time
(``log_blocks.build_timing``). Slot dict shapes are telemetry wire shapes —
field names inside them are load-bearing.
"""
from contextvars import ContextVar
from dataclasses import dataclass
@dataclass
class RequestStats:
lease: dict | None = None # gpu_runtime duration estimators
cpu: dict | None = None # zero_gpu local-subprocess dispatch
dispatch: dict | None = None # worker_pool remote-worker dispatch
_STATS: ContextVar[RequestStats | None] = ContextVar("request_stats", default=None)
def get_request_stats() -> RequestStats:
"""This request's stats object, created on first access."""
stats = _STATS.get()
if stats is None:
stats = RequestStats()
_STATS.set(stats)
return stats
def reset_request_stats() -> None:
"""Drop all per-request stats. Called once at every pipeline entry."""
_STATS.set(RequestStats())