Fix SentryMetrics method signatures to match base class

Update start_ttfb_metrics, stop_ttfb_metrics, start_processing_metrics,
and stop_processing_metrics to accept start_time/end_time keyword
arguments matching the updated FrameProcessorMetrics signatures.

Closes #3808
This commit is contained in:
Aleix Conchillo Flaqué
2026-02-24 11:26:34 -08:00
parent 57d25c564c
commit b4b9976b9c
2 changed files with 21 additions and 11 deletions

1
changelog/3808.fixed.md Normal file
View File

@@ -0,0 +1 @@
- Fixed `SentryMetrics` method signatures to match updated `FrameProcessorMetrics` base class, resolving `TypeError` when using `start_time`/`end_time` keyword arguments.

View File

@@ -7,6 +7,7 @@
"""Sentry integration for frame processor metrics.""" """Sentry integration for frame processor metrics."""
import asyncio import asyncio
from typing import Optional
from loguru import logger from loguru import logger
@@ -70,13 +71,18 @@ class SentryMetrics(FrameProcessorMetrics):
logger.trace(f"{self} Flushing Sentry metrics") logger.trace(f"{self} Flushing Sentry metrics")
sentry_sdk.flush(timeout=5.0) sentry_sdk.flush(timeout=5.0)
async def start_ttfb_metrics(self, report_only_initial_ttfb): async def start_ttfb_metrics(
self, *, start_time: Optional[float] = None, report_only_initial_ttfb: bool
):
"""Start tracking time-to-first-byte metrics. """Start tracking time-to-first-byte metrics.
Args: Args:
start_time: Optional start timestamp override.
report_only_initial_ttfb: Whether to report only the initial TTFB measurement. report_only_initial_ttfb: Whether to report only the initial TTFB measurement.
""" """
await super().start_ttfb_metrics(report_only_initial_ttfb) await super().start_ttfb_metrics(
start_time=start_time, report_only_initial_ttfb=report_only_initial_ttfb
)
if self._should_report_ttfb and self._sentry_available: if self._should_report_ttfb and self._sentry_available:
self._ttfb_metrics_tx = sentry_sdk.start_transaction( self._ttfb_metrics_tx = sentry_sdk.start_transaction(
@@ -87,23 +93,25 @@ class SentryMetrics(FrameProcessorMetrics):
f"{self} Sentry transaction started (ID: {self._ttfb_metrics_tx.span_id} Name: {self._ttfb_metrics_tx.name})" f"{self} Sentry transaction started (ID: {self._ttfb_metrics_tx.span_id} Name: {self._ttfb_metrics_tx.name})"
) )
async def stop_ttfb_metrics(self): async def stop_ttfb_metrics(self, *, end_time: Optional[float] = None):
"""Stop tracking time-to-first-byte metrics. """Stop tracking time-to-first-byte metrics.
Queues the TTFB transaction for completion and transmission to Sentry. Args:
end_time: Optional end timestamp override.
""" """
await super().stop_ttfb_metrics() await super().stop_ttfb_metrics(end_time=end_time)
if self._sentry_available and self._ttfb_metrics_tx: if self._sentry_available and self._ttfb_metrics_tx:
await self._sentry_queue.put(self._ttfb_metrics_tx) await self._sentry_queue.put(self._ttfb_metrics_tx)
self._ttfb_metrics_tx = None self._ttfb_metrics_tx = None
async def start_processing_metrics(self): async def start_processing_metrics(self, *, start_time: Optional[float] = None):
"""Start tracking frame processing metrics. """Start tracking frame processing metrics.
Creates a new Sentry transaction to track processing performance. Args:
start_time: Optional start timestamp override.
""" """
await super().start_processing_metrics() await super().start_processing_metrics(start_time=start_time)
if self._sentry_available: if self._sentry_available:
self._processing_metrics_tx = sentry_sdk.start_transaction( self._processing_metrics_tx = sentry_sdk.start_transaction(
@@ -114,12 +122,13 @@ class SentryMetrics(FrameProcessorMetrics):
f"{self} Sentry transaction started (ID: {self._processing_metrics_tx.span_id} Name: {self._processing_metrics_tx.name})" f"{self} Sentry transaction started (ID: {self._processing_metrics_tx.span_id} Name: {self._processing_metrics_tx.name})"
) )
async def stop_processing_metrics(self): async def stop_processing_metrics(self, *, end_time: Optional[float] = None):
"""Stop tracking frame processing metrics. """Stop tracking frame processing metrics.
Queues the processing transaction for completion and transmission to Sentry. Args:
end_time: Optional end timestamp override.
""" """
await super().stop_processing_metrics() await super().stop_processing_metrics(end_time=end_time)
if self._sentry_available and self._processing_metrics_tx: if self._sentry_available and self._processing_metrics_tx:
await self._sentry_queue.put(self._processing_metrics_tx) await self._sentry_queue.put(self._processing_metrics_tx)