mirror of
https://github.com/home-assistant/core.git
synced 2025-08-07 22:55:10 +02:00
Add timeout to platform/component
This commit is contained in:
@@ -9,6 +9,7 @@ from collections import defaultdict
|
|||||||
from types import ModuleType
|
from types import ModuleType
|
||||||
from typing import Any, Optional, Dict
|
from typing import Any, Optional, Dict
|
||||||
|
|
||||||
|
import async_timeout
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
from voluptuous.humanize import humanize_error
|
from voluptuous.humanize import humanize_error
|
||||||
|
|
||||||
@@ -142,6 +143,7 @@ def _async_setup_component(hass: core.HomeAssistant,
|
|||||||
async_comp = hasattr(component, 'async_setup')
|
async_comp = hasattr(component, 'async_setup')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
with async_timeout.timeout(30, loop=hass.loop):
|
||||||
if async_comp:
|
if async_comp:
|
||||||
result = yield from component.async_setup(hass, config)
|
result = yield from component.async_setup(hass, config)
|
||||||
else:
|
else:
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
"""Helpers for components that manage entities."""
|
"""Helpers for components that manage entities."""
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
|
import async_timeout
|
||||||
|
|
||||||
from homeassistant import config as conf_util
|
from homeassistant import config as conf_util
|
||||||
from homeassistant.bootstrap import (
|
from homeassistant.bootstrap import (
|
||||||
async_prepare_setup_platform, async_prepare_setup_component)
|
async_prepare_setup_platform, async_prepare_setup_component)
|
||||||
@@ -138,6 +140,7 @@ class EntityComponent(object):
|
|||||||
entity_platform = self._platforms[key]
|
entity_platform = self._platforms[key]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
with async_timeout.timeout(30, loop=self.hass.loop):
|
||||||
if getattr(platform, 'async_setup_platform', None):
|
if getattr(platform, 'async_setup_platform', None):
|
||||||
yield from platform.async_setup_platform(
|
yield from platform.async_setup_platform(
|
||||||
self.hass, platform_config,
|
self.hass, platform_config,
|
||||||
@@ -145,8 +148,9 @@ class EntityComponent(object):
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
yield from self.hass.loop.run_in_executor(
|
yield from self.hass.loop.run_in_executor(
|
||||||
None, platform.setup_platform, self.hass, platform_config,
|
None, platform.setup_platform, self.hass,
|
||||||
entity_platform.add_entities, discovery_info
|
platform_config, entity_platform.add_entities,
|
||||||
|
discovery_info
|
||||||
)
|
)
|
||||||
|
|
||||||
self.hass.config.components.append(
|
self.hass.config.components.append(
|
||||||
|
Reference in New Issue
Block a user