fix some timeouts

This commit is contained in:
Andrey
2021-03-29 21:43:25 +03:00
parent 687e80f729
commit ad1210d5cc

View File

@@ -91,8 +91,6 @@ class MegaD:
**kwargs, **kwargs,
): ):
"""Initialize.""" """Initialize."""
if DOMAIN not in hass.data:
hass.data[DOMAIN] = {}
if config is not None: if config is not None:
lg.debug(f'load config: %s', config.data) lg.debug(f'load config: %s', config.data)
self.config = config self.config = config
@@ -159,11 +157,10 @@ class MegaD:
if force_d is not None: if force_d is not None:
self.customize[CONF_FORCE_D] = force_d self.customize[CONF_FORCE_D] = force_d
try: try:
if allow_hosts is not None: if allow_hosts is not None and DOMAIN in hass.data:
allow_hosts = set(allow_hosts.split(';')) allow_hosts = set(allow_hosts.split(';'))
hass.data[DOMAIN][CONF_HTTP].allowed_hosts |= allow_hosts hass.data[DOMAIN][CONF_HTTP].allowed_hosts |= allow_hosts
hass.data[DOMAIN][CONF_HTTP].protected = protected hass.data[DOMAIN][CONF_HTTP].protected = protected
except Exception: except Exception:
self.lg.exception('while setting allowed hosts') self.lg.exception('while setting allowed hosts')
@@ -292,14 +289,20 @@ class MegaD:
url = f"{url}/?{cmd}" url = f"{url}/?{cmd}"
self.lg.debug('request: %s', url) self.lg.debug('request: %s', url)
async with self._http_lck(priority): async with self._http_lck(priority):
async with aiohttp.request("get", url=url) as req: for _ntry in range(3):
if req.status != 200: try:
self.lg.warning('%s returned %s (%s)', url, req.status, await req.text()) async with aiohttp.request("get", url=url) as req:
return None if req.status != 200:
else: self.lg.warning('%s returned %s (%s)', url, req.status, await req.text())
ret = await req.text() return None
self.lg.debug('response %s', ret) else:
return ret ret = await req.text()
self.lg.debug('response %s', ret)
return ret
except asyncio.TimeoutError:
self.lg.warning(f'timeout while requesting {url}')
await asyncio.sleep(1)
raise asyncio.TimeoutError('after 3 tries')
async def save(self): async def save(self):
await self.send_command(cmd='s') await self.send_command(cmd='s')