From f51c9704e0fe51ea2885fb99ef48b788aeedd2d1 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 21 Jul 2018 19:01:20 +0200 Subject: [PATCH] Fix timeout on freegeoip (#581) * Fix timeout on freegeoip * Update updater.py * Update supervisor.py * Update dt.py * Update hassos.py * Update core.py * Update hassos.py * Update supervisor.py * Update updater.py --- hassio/core.py | 1 + hassio/hassos.py | 3 ++- hassio/supervisor.py | 3 ++- hassio/updater.py | 3 ++- hassio/utils/dt.py | 3 ++- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/hassio/core.py b/hassio/core.py index d7b846257..94c845965 100644 --- a/hassio/core.py +++ b/hassio/core.py @@ -25,6 +25,7 @@ class HassIO(CoreSysAttributes): if self.sys_config.timezone == 'UTC': self.sys_config.timezone = \ await fetch_timezone(self.sys_websession) + self.sys_loop.call_soon(self.sys_config.save_data) # Load Supervisor await self.sys_supervisor.load() diff --git a/hassio/hassos.py b/hassio/hassos.py index f48698d35..8eefba710 100644 --- a/hassio/hassos.py +++ b/hassio/hassos.py @@ -1,4 +1,5 @@ """HassOS support on supervisor.""" +import asyncio import logging from pathlib import Path @@ -92,7 +93,7 @@ class HassOS(CoreSysAttributes): _LOGGER.info("OTA update is downloaded on %s", raucb) return raucb - except aiohttp.ClientError as err: + except (aiohttp.ClientError, asyncio.TimeoutError) as err: _LOGGER.warning("Can't fetch versions from %s: %s", url, err) except OSError as err: diff --git a/hassio/supervisor.py b/hassio/supervisor.py index 6d11f9483..aaa467814 100644 --- a/hassio/supervisor.py +++ b/hassio/supervisor.py @@ -1,4 +1,5 @@ """HomeAssistant control object.""" +import asyncio import logging from pathlib import Path from tempfile import TemporaryDirectory @@ -60,7 +61,7 @@ class Supervisor(CoreSysAttributes): async with self.sys_websession.get(url, timeout=10) as request: data = await request.text() - except aiohttp.ClientError as err: + except (aiohttp.ClientError, asyncio.TimeoutError) as err: _LOGGER.warning("Can't fetch AppArmor profile: %s", err) return diff --git a/hassio/updater.py b/hassio/updater.py index fb8efe876..3d81cae58 100644 --- a/hassio/updater.py +++ b/hassio/updater.py @@ -1,4 +1,5 @@ """Fetch last versions from webserver.""" +import asyncio from contextlib import suppress from datetime import timedelta import json @@ -81,7 +82,7 @@ class Updater(JsonConfig, CoreSysAttributes): async with self.sys_websession.get(url, timeout=10) as request: data = await request.json(content_type=None) - except aiohttp.ClientError as err: + except (aiohttp.ClientError, asyncio.TimeoutError) as err: _LOGGER.warning("Can't fetch versions from %s: %s", url, err) raise HassioUpdaterError() from None diff --git a/hassio/utils/dt.py b/hassio/utils/dt.py index 66fa176bc..5415f80b0 100644 --- a/hassio/utils/dt.py +++ b/hassio/utils/dt.py @@ -1,4 +1,5 @@ """Tools file for HassIO.""" +import asyncio from datetime import datetime, timedelta, timezone import logging import re @@ -30,7 +31,7 @@ async def fetch_timezone(websession): async with websession.get(FREEGEOIP_URL, timeout=10) as request: data = await request.json() - except aiohttp.ClientError as err: + except (aiohttp.ClientError, asyncio.TimeoutError) as err: _LOGGER.warning("Can't fetch freegeoip data: %s", err) except ValueError as err: