Fix lingering timers in tts (#90834)

* Fix lingering timers in tts

* Improve

* Use HassJob with cancel_on_shutdown
This commit is contained in:
epenet 2023-04-13 15:27:13 +02:00 committed by GitHub
parent c1b7aa084c
commit c40836b49f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,6 +3,7 @@ from __future__ import annotations
import asyncio
from collections.abc import Mapping
from datetime import datetime
import functools as ft
import hashlib
from http import HTTPStatus
@ -36,10 +37,11 @@ from homeassistant.const import (
CONF_PLATFORM,
PLATFORM_FORMAT,
)
from homeassistant.core import HomeAssistant, ServiceCall, callback
from homeassistant.core import HassJob, HomeAssistant, ServiceCall, callback
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import config_per_platform, discovery
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.event import async_call_later
from homeassistant.helpers.network import get_url
from homeassistant.helpers.service import async_set_service_schema
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
@ -645,11 +647,19 @@ class SpeechManager:
}
@callback
def async_remove_from_mem() -> None:
def async_remove_from_mem(_: datetime) -> None:
"""Cleanup memcache."""
self.mem_cache.pop(cache_key, None)
self.hass.loop.call_later(self.time_memory, async_remove_from_mem)
async_call_later(
self.hass,
self.time_memory,
HassJob(
async_remove_from_mem,
name="tts remove_from_mem",
cancel_on_shutdown=True,
),
)
async def async_read_tts(self, filename: str) -> tuple[str | None, bytes]:
"""Read a voice file and return binary.