Speed up status updating in SimpliSafe (#22506)

* Speed up status updating in SimpliSafe

* Linting

* Member comments
This commit is contained in:
Aaron Bach 2019-03-29 02:38:58 -06:00 committed by Rohan Kapoor
parent 424543f34a
commit f4625fd561

View File

@ -1,4 +1,5 @@
"""Support for SimpliSafe alarm systems."""
import asyncio
import logging
from datetime import timedelta
@ -107,17 +108,18 @@ async def async_setup_entry(hass, config_entry):
async def refresh(event_time):
"""Refresh data from the SimpliSafe account."""
for system in systems:
_LOGGER.debug('Updating system data: %s', system.system_id)
try:
await system.update()
except SimplipyError as err:
tasks = [system.update() for system in systems]
results = await asyncio.gather(*tasks, return_exceptions=True)
for system, result in zip(systems, results):
if isinstance(result, SimplipyError):
_LOGGER.error(
'There was error updating "%s": %s', system.address, err)
'There was error updating "%s": %s', system.address,
result)
continue
async_dispatcher_send(hass, TOPIC_UPDATE.format(system.system_id))
_LOGGER.debug('Updated status of "%s"', system.address)
async_dispatcher_send(
hass, TOPIC_UPDATE.format(system.system_id))
if system.api.refresh_token_dirty:
_async_save_refresh_token(