Skip to content

Commit ecbe542

Browse files
Prevent LogicalMeter from crashing on formula application failure (#105)
2 parents 7c8f2ce + 752bce2 commit ecbe542

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/frequenz/sdk/timeseries/logical_meter/_logical_meter.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"""A logical meter for calculating high level metrics for a microgrid."""
55

66
import asyncio
7+
import logging
78
import uuid
89
from typing import Dict, List
910

@@ -15,6 +16,8 @@
1516
from ._formula_engine import FormulaEngine
1617
from ._resampled_formula_builder import ResampledFormulaBuilder
1718

19+
logger = logging.Logger(__name__)
20+
1821

1922
class LogicalMeter:
2023
"""A logical meter for calculating high level metrics in a microgrid.
@@ -71,8 +74,12 @@ async def _run_formula(
7174
formula: The formula to run.
7275
sender: A sender for sending the formula results to.
7376
"""
74-
while msg := await formula.apply():
75-
await sender.send(msg)
77+
while True:
78+
try:
79+
msg = await formula.apply()
80+
await sender.send(msg)
81+
except Exception as err: # pylint: disable=broad-except
82+
logger.warning("Formula application failed: %s", err)
7683

7784
async def start_formula(
7885
self,

0 commit comments

Comments
 (0)