mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Fix lingering timer in duckdns (#92516)
This commit is contained in:
parent
4d77c6f27f
commit
e0903b8bc4
@ -7,7 +7,13 @@ from typing import Any
|
|||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.const import CONF_ACCESS_TOKEN, CONF_DOMAIN
|
from homeassistant.const import CONF_ACCESS_TOKEN, CONF_DOMAIN
|
||||||
from homeassistant.core import CALLBACK_TYPE, HomeAssistant, ServiceCall, callback
|
from homeassistant.core import (
|
||||||
|
CALLBACK_TYPE,
|
||||||
|
HassJob,
|
||||||
|
HomeAssistant,
|
||||||
|
ServiceCall,
|
||||||
|
callback,
|
||||||
|
)
|
||||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.event import async_call_later
|
from homeassistant.helpers.event import async_call_later
|
||||||
@ -110,7 +116,7 @@ def async_track_time_interval_backoff(
|
|||||||
"""Add a listener that fires repetitively at every timedelta interval."""
|
"""Add a listener that fires repetitively at every timedelta interval."""
|
||||||
if not isinstance(intervals, (list, tuple)):
|
if not isinstance(intervals, (list, tuple)):
|
||||||
intervals = (intervals,)
|
intervals = (intervals,)
|
||||||
remove = None
|
remove: CALLBACK_TYPE | None = None
|
||||||
failed = 0
|
failed = 0
|
||||||
|
|
||||||
async def interval_listener(now: datetime) -> None:
|
async def interval_listener(now: datetime) -> None:
|
||||||
@ -122,8 +128,11 @@ def async_track_time_interval_backoff(
|
|||||||
failed = 0
|
failed = 0
|
||||||
finally:
|
finally:
|
||||||
delay = intervals[failed] if failed < len(intervals) else intervals[-1]
|
delay = intervals[failed] if failed < len(intervals) else intervals[-1]
|
||||||
remove = async_call_later(hass, delay.total_seconds(), interval_listener)
|
remove = async_call_later(
|
||||||
|
hass, delay.total_seconds(), interval_listener_job
|
||||||
|
)
|
||||||
|
|
||||||
|
interval_listener_job = HassJob(interval_listener, cancel_on_shutdown=True)
|
||||||
hass.async_run_job(interval_listener, dt_util.utcnow())
|
hass.async_run_job(interval_listener, dt_util.utcnow())
|
||||||
|
|
||||||
def remove_listener() -> None:
|
def remove_listener() -> None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user