Skip to content

Commit dbc16db

Browse files
committed
Replace Task.exception() with Task.result()
`Task.exception()` returns raised exceptions as values, unless tasks raised `CancelledError`, in which case, `Task.exception()` raises `CancelledError` as well: https://docs.python.org/3/library/asyncio-task.html#asyncio.Task.exception `Task.result()` provides a more consistent interface, by always re-raising all caught exceptions. Signed-off-by: Sahas Subramanian <[email protected]>
1 parent aa259ec commit dbc16db

File tree

2 files changed

+41
-40
lines changed

2 files changed

+41
-40
lines changed

src/frequenz/sdk/actor/power_distributing/_component_managers/_ev_charger_manager/_ev_charger_manager.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -323,29 +323,29 @@ async def _set_api_power(
323323
succeeded_components: set[int] = set()
324324
failed_power = Power.zero()
325325
for component_id, task in tasks.items():
326-
exc = task.exception()
327-
if exc is not None:
328-
failed_components.add(component_id)
329-
failed_power += target_power_changes[component_id]
326+
try:
327+
task.result()
328+
except asyncio.CancelledError:
329+
_logger.warning(
330+
"Timeout while setting power to EV charger %s", component_id
331+
)
332+
except grpc.aio.AioRpcError as exc:
333+
_logger.warning(
334+
"Error while setting power to EV charger %s: %s",
335+
component_id,
336+
exc,
337+
)
338+
except Exception: # pylint: disable=broad-except
339+
_logger.exception(
340+
"Unknown error while setting power to EV charger: %s", component_id
341+
)
330342
else:
331343
succeeded_components.add(component_id)
344+
continue
345+
346+
failed_components.add(component_id)
347+
failed_power += target_power_changes[component_id]
332348

333-
match task.exception():
334-
case asyncio.CancelledError():
335-
_logger.warning(
336-
"Timeout while setting power to EV charger %s", component_id
337-
)
338-
case grpc.aio.AioRpcError() as err:
339-
_logger.warning(
340-
"Error while setting power to EV charger %s: %s",
341-
component_id,
342-
err,
343-
)
344-
case Exception():
345-
_logger.exception(
346-
"Unknown error while setting power to EV charger: %s",
347-
component_id,
348-
)
349349
if failed_components:
350350
return PartialFailure(
351351
failed_components=failed_components,

src/frequenz/sdk/actor/power_distributing/_component_managers/_pv_inverter_manager/_pv_inverter_manager.py

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -196,29 +196,30 @@ async def _set_api_power( # pylint: disable=too-many-locals
196196
succeeded_components: set[int] = set()
197197
failed_power = Power.zero()
198198
for component_id, task in tasks.items():
199-
exc = task.exception()
200-
if exc is not None:
201-
failed_components.add(component_id)
202-
failed_power += allocations[component_id]
199+
try:
200+
task.result()
201+
except asyncio.CancelledError:
202+
_logger.warning(
203+
"Timeout while setting power to PV inverter %s", component_id
204+
)
205+
except grpc.aio.AioRpcError as exc:
206+
_logger.warning(
207+
"Error while setting power to PV inverter %s: %s",
208+
component_id,
209+
exc,
210+
)
211+
except Exception: # pylint: disable=broad-except
212+
_logger.exception(
213+
"Unknown error while setting power to PV inverter: %s",
214+
component_id,
215+
)
203216
else:
204217
succeeded_components.add(component_id)
218+
continue
219+
220+
failed_components.add(component_id)
221+
failed_power += allocations[component_id]
205222

206-
match task.exception():
207-
case asyncio.CancelledError():
208-
_logger.warning(
209-
"Timeout while setting power to PV inverter %s", component_id
210-
)
211-
case grpc.aio.AioRpcError() as err:
212-
_logger.warning(
213-
"Error while setting power to PV inverter %s: %s",
214-
component_id,
215-
err,
216-
)
217-
case Exception():
218-
_logger.exception(
219-
"Unknown error while setting power to PV inverter: %s",
220-
component_id,
221-
)
222223
if failed_components:
223224
await self._results_sender.send(
224225
PartialFailure(

0 commit comments

Comments
 (0)