From be1c4085f2108995ac02c58de33f8fad0182ef11 Mon Sep 17 00:00:00 2001 From: j Date: Sat, 27 Feb 2016 10:19:45 +0530 Subject: [PATCH] save remaining syncmetadata tasks on shutdown --- oml/item/models.py | 7 +++++++ oml/tasks.py | 2 ++ 2 files changed, 9 insertions(+) diff --git a/oml/item/models.py b/oml/item/models.py index 4225b66..250bcc4 100644 --- a/oml/item/models.py +++ b/oml/item/models.py @@ -873,8 +873,15 @@ def sync_metadata(ids=None): else: later = [] if ids: + done = set() for i in Item.query.filter(Item.id.in_(ids)): i.sync_metadata() + done.add(i.id) + if state.shutdown: + later = list((set(later) | set(ids)) - done) + if later and state.tasks: + state.tasks.queue('syncmetadata', later) + later = None if later: if state.main and state.tasks: state.main.call_later(delay, lambda: state.tasks.queue('syncmetadata', later)) diff --git a/oml/tasks.py b/oml/tasks.py index 858390e..d228589 100644 --- a/oml/tasks.py +++ b/oml/tasks.py @@ -111,3 +111,5 @@ class Tasks(Thread): if not state.shutdown: #logger.debug('queue: %s (%s)', action, data) self.q.put((priority, (action, data))) + else: + self._tasks.append((priority, (action, data)))