Move recorder query out of event loop (#12615)

This commit is contained in:
Anders Melchiorsen 2018-02-23 10:12:40 +01:00 committed by Pascal Vizeli
parent 1e672b93e7
commit 1b22f2d8b8

View File

@ -256,6 +256,14 @@ class Recorder(threading.Thread):
self.hass.bus.async_listen_once( self.hass.bus.async_listen_once(
EVENT_HOMEASSISTANT_START, notify_hass_started) EVENT_HOMEASSISTANT_START, notify_hass_started)
self.hass.add_job(register)
result = hass_started.result()
# If shutdown happened before HASS finished starting
if result is shutdown_task:
return
# Start periodic purge
if self.keep_days and self.purge_interval: if self.keep_days and self.purge_interval:
@callback @callback
def async_purge(now): def async_purge(now):
@ -272,18 +280,11 @@ class Recorder(threading.Thread):
event = session.query(Events).first() event = session.query(Events).first()
if event is not None: if event is not None:
session.expunge(event) session.expunge(event)
run = dt_util.as_utc(event.time_fired) + \ run = dt_util.as_utc(event.time_fired) + timedelta(
timedelta(days=self.keep_days+self.purge_interval) days=self.keep_days+self.purge_interval)
run = min(latest, max(run, earliest)) run = min(latest, max(run, earliest))
self.hass.helpers.event.async_track_point_in_time(
async_purge, run)
self.hass.add_job(register) self.hass.helpers.event.track_point_in_time(async_purge, run)
result = hass_started.result()
# If shutdown happened before HASS finished starting
if result is shutdown_task:
return
while True: while True:
event = self.queue.get() event = self.queue.get()