Coverage for qreward / utils / scheduler / metrics.py: 100.00%
13 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-23 19:32 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-23 19:32 +0000
1"""Execution metrics for schedule decorator."""
3from dataclasses import dataclass
4from typing import Any, Optional
7@dataclass
8class ScheduleMetrics:
9 """Execution metrics collected after a schedule invocation.
11 Attributes:
12 total_calls: Total number of task submissions (including retries
13 and hedged requests).
14 success_count: Number of successful completions.
15 failure_count: Number of failed attempts.
16 retry_count: Number of retries (excludes the first attempt).
17 total_latency_ms: Wall-clock latency from start to finish
18 in milliseconds.
19 avg_latency_ms: Average latency per attempt in milliseconds.
20 """
22 total_calls: int
23 success_count: int
24 failure_count: int
25 retry_count: int
26 total_latency_ms: float
27 avg_latency_ms: float
29 def export_to_otel(self, exporter: Optional[Any] = None) -> None:
30 """Export metrics to OpenTelemetry via a TelemetryExporter.
32 Args:
33 exporter: A TelemetryExporter instance. If None, this is a no-op.
34 """
35 if exporter is not None:
36 exporter.record(self)