Преглед на файлове

celerybeat persistent scheduler shelve fix

Roberto Gaiser преди 14 години
родител
ревизия
cc1a67ebb4
променени са 1 файла, в които са добавени 18 реда и са изтрити 0 реда
  1. 18 0
      celery/beat.py

+ 18 - 0
celery/beat.py

@@ -303,6 +303,24 @@ class PersistentScheduler(Scheduler):
     def get_schedule(self):
         return self._store
 
+    def merge_inplace(self, b):
+        A, B = set(self._store.keys()), set(b.keys())
+
+        # Remove items from disk not in the schedule anymore.
+        for key in A ^ B:
+            self._store.pop(key, None)
+
+        # Update and add new items in the schedule
+        for key in B:
+            entry = self.Entry(**dict(b[key]))
+            if self._store.get(key):
+                self._store[key].update(entry)
+            else:
+                self._store[key] = entry
+
+    def update_from_dict(self, dict_):
+        self._store.update(dict((name, self._maybe_entry(name, entry))
+                            for name, entry in dict_.items()))
     def sync(self):
         if self._store is not None:
             self.logger.debug("CeleryBeat: Syncing schedule to disk...")