From 96b02153b9bd2ff21247b555c224b6d5152ae058 Mon Sep 17 00:00:00 2001 From: Brandon Rothweiler Date: Fri, 30 Jul 2021 01:08:52 -0400 Subject: [PATCH] Only allow one Mazda vehicle status request at a time (#53736) --- homeassistant/components/mazda/__init__.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/mazda/__init__.py b/homeassistant/components/mazda/__init__.py index 921dd4c06c5..c64a3b35993 100644 --- a/homeassistant/components/mazda/__init__.py +++ b/homeassistant/components/mazda/__init__.py @@ -28,7 +28,6 @@ from homeassistant.helpers.update_coordinator import ( DataUpdateCoordinator, UpdateFailed, ) -from homeassistant.util.async_ import gather_with_concurrency from .const import DATA_CLIENT, DATA_COORDINATOR, DATA_VEHICLES, DOMAIN, SERVICES @@ -143,14 +142,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: try: vehicles = await with_timeout(mazda_client.get_vehicles()) - vehicle_status_tasks = [ - with_timeout(mazda_client.get_vehicle_status(vehicle["id"])) - for vehicle in vehicles - ] - statuses = await gather_with_concurrency(5, *vehicle_status_tasks) - - for vehicle, status in zip(vehicles, statuses): - vehicle["status"] = status + # The Mazda API can throw an error when multiple simultaneous requests are + # made for the same account, so we can only make one request at a time here + for vehicle in vehicles: + vehicle["status"] = await with_timeout( + mazda_client.get_vehicle_status(vehicle["id"]) + ) hass.data[DOMAIN][entry.entry_id][DATA_VEHICLES] = vehicles