Skip to content

Commit 98c885a

Browse files
committed
Add a stop method for ComponentMetricFetcher
This should close the raw data receiver when the fetcher is no longer needed. Signed-off-by: Sahas Subramanian <[email protected]>
1 parent fafe79a commit 98c885a

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/frequenz/sdk/timeseries/battery_pool/_component_metric_fetcher.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
ComponentMetricId,
2222
InverterData,
2323
)
24+
from typing_extensions import override
2425

2526
from ..._internal._asyncio import AsyncConstructible
2627
from ..._internal._constants import MAX_BATTERY_DATA_AGE_SEC
@@ -68,6 +69,10 @@ async def async_new(
6869
async def fetch_next(self) -> ComponentMetricsData | None:
6970
"""Fetch metrics for this component."""
7071

72+
@abstractmethod
73+
def stop(self) -> None:
74+
"""Stop the metric fetcher."""
75+
7176

7277
class LatestMetricsFetcher(ComponentMetricFetcher, Generic[T], ABC):
7378
"""Subscribe for the latest component data and extract the needed metrics."""
@@ -143,6 +148,11 @@ async def fetch_next(self) -> ComponentMetricsData | None:
143148

144149
return ComponentMetricsData(self._component_id, data.timestamp, metrics)
145150

151+
@override
152+
def stop(self) -> None:
153+
"""Stop the metric fetcher."""
154+
self._receiver.close()
155+
146156
@abstractmethod
147157
def _extract_metric(self, data: T, mid: ComponentMetricId) -> float: ...
148158

0 commit comments

Comments
 (0)