Reduce Life360 update time by fetching Places & Members in parallel (#106277)

This commit is contained in:
Phil Bruckner
2023-12-22 16:29:26 -06:00
committed by GitHub
parent a4357409c8
commit 963347b9c5

View File

@@ -2,6 +2,7 @@
from __future__ import annotations from __future__ import annotations
import asyncio
from contextlib import suppress from contextlib import suppress
from dataclasses import dataclass, field from dataclasses import dataclass, field
from datetime import datetime from datetime import datetime
@@ -130,8 +131,10 @@ class Life360DataUpdateCoordinator(DataUpdateCoordinator[Life360Data]):
for circle in await self._retrieve_data("get_circles"): for circle in await self._retrieve_data("get_circles"):
circle_id = circle["id"] circle_id = circle["id"]
circle_members = await self._retrieve_data("get_circle_members", circle_id) circle_members, circle_places = await asyncio.gather(
circle_places = await self._retrieve_data("get_circle_places", circle_id) self._retrieve_data("get_circle_members", circle_id),
self._retrieve_data("get_circle_places", circle_id),
)
data.circles[circle_id] = Life360Circle( data.circles[circle_id] = Life360Circle(
circle["name"], circle["name"],