Skip to content

Commit 4b2ec31

Browse files
committed
Use run_forever() instead of a custom loop
`run_forever()` is now more resilient to issues with no running asyncio event loop, so it is better to use that instead of our custom naïve loop. Signed-off-by: Leandro Lucarella <[email protected]>
1 parent 7a2735c commit 4b2ec31

File tree

1 file changed

+2
-12
lines changed

1 file changed

+2
-12
lines changed

src/frequenz/sdk/microgrid/_power_distributing/_component_pool_status_tracker.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66

77
import asyncio
88
import contextlib
9-
import logging
109
from collections import abc
1110
from datetime import timedelta
1211

1312
from frequenz.channels import Broadcast, Merger, Receiver, Sender, merge
1413
from frequenz.client.common.microgrid.components import ComponentId
1514

16-
from ..._internal._asyncio import cancel_and_await
15+
from ..._internal._asyncio import cancel_and_await, run_forever
1716
from ._component_status import (
1817
ComponentPoolStatus,
1918
ComponentStatus,
@@ -22,8 +21,6 @@
2221
SetPowerResult,
2322
)
2423

25-
_logger = logging.getLogger(__name__)
26-
2724

2825
class ComponentPoolStatusTracker:
2926
"""Track status of components of a given category.
@@ -112,14 +109,7 @@ async def _run(self) -> None:
112109
async with contextlib.AsyncExitStack() as stack:
113110
for tracker in self._component_status_trackers:
114111
await stack.enter_async_context(tracker)
115-
while True:
116-
try:
117-
await self._update_status()
118-
except Exception as err: # pylint: disable=broad-except
119-
_logger.error(
120-
"ComponentPoolStatus failed with error: %s. Restarting.", err
121-
)
122-
await asyncio.sleep(1.0)
112+
await run_forever(self._update_status)
123113

124114
async def _update_status(self) -> None:
125115
async for status in self._merged_status_receiver:

0 commit comments

Comments
 (0)