|  | @@ -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...")
 |