Fix recorder purge (#10318)

* Fix recorder purge

* Fix lint

* fix utc convert
pull/10583/head
Pascal Vizeli 2017-11-03 20:55:00 +01:00 committed by Paulus Schoutsen
parent 06d3d8b827
commit a4dec0b6d2
1 changed files with 5 additions and 9 deletions

View File

@ -260,15 +260,12 @@ class Recorder(threading.Thread):
notify_hass_started)
if self.keep_days and self.purge_interval:
async_track_point_in_time = \
self.hass.helpers.event.async_track_point_in_time
@callback
def async_purge(now):
"""Trigger the purge and schedule the next run."""
self.queue.put(PurgeTask(self.keep_days))
async_track_point_in_time(async_purge, now + timedelta(
days=self.purge_interval))
self.hass.helpers.event.async_track_point_in_time(
async_purge, now + timedelta(days=self.purge_interval))
earliest = dt_util.utcnow() + timedelta(minutes=30)
run = latest = dt_util.utcnow() + \
@ -277,12 +274,11 @@ class Recorder(threading.Thread):
event = session.query(Events).first()
if event is not None:
session.expunge(event)
run = dt_util.UTC.localize(event.time_fired) + \
run = dt_util.as_utc(event.time_fired) + \
timedelta(days=self.keep_days+self.purge_interval)
run = min(latest, max(run, earliest))
_LOGGER.debug("Scheduling purge run for %s", run)
async_track_point_in_time(async_purge, run)
self.hass.helpers.event.async_track_point_in_time(
async_purge, run)
self.hass.add_job(register)
result = hass_started.result()