|  | @@ -209,10 +209,15 @@ class Scheduler(object):
 | 
	
		
			
				|  |  |          else:
 | 
	
		
			
				|  |  |              debug('%s sent. id->%s', entry.task, result.id)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    def adjust(self, n, drift=-0.010):
 | 
	
		
			
				|  |  | +        if n and n > 0:
 | 
	
		
			
				|  |  | +            return n + drift
 | 
	
		
			
				|  |  | +        return n
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def is_due(self, entry):
 | 
	
		
			
				|  |  |          return entry.is_due()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    def tick(self, drift=-0.010, event_t=event_t, min=min,
 | 
	
		
			
				|  |  | +    def tick(self, event_t=event_t, min=min,
 | 
	
		
			
				|  |  |               heappop=heapq.heappop, heappush=heapq.heappush,
 | 
	
		
			
				|  |  |               heapify=heapq.heapify):
 | 
	
		
			
				|  |  |          """Run a tick, that is one iteration of the scheduler.
 | 
	
	
		
			
				|  | @@ -220,10 +225,11 @@ class Scheduler(object):
 | 
	
		
			
				|  |  |          Executes all due tasks.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  | +        adjust = self.adjust
 | 
	
		
			
				|  |  |          max_interval = self.max_interval
 | 
	
		
			
				|  |  |          H = self._heap
 | 
	
		
			
				|  |  |          if H is None:
 | 
	
		
			
				|  |  | -            H = self._heap = [event_t(e.is_due()[1] + drift or 0, 5, e)
 | 
	
		
			
				|  |  | +            H = self._heap = [event_t(adjust(e.is_due()[1]) or 0, 5, e)
 | 
	
		
			
				|  |  |                                for e in values(self.schedule)]
 | 
	
		
			
				|  |  |              heapify(H)
 | 
	
		
			
				|  |  |          event = H[0]
 | 
	
	
		
			
				|  | @@ -239,8 +245,7 @@ class Scheduler(object):
 | 
	
		
			
				|  |  |              else:
 | 
	
		
			
				|  |  |                  heappush(H, verify)
 | 
	
		
			
				|  |  |                  return min(verify[0], max_interval)
 | 
	
		
			
				|  |  | -        return min(next_time_to_run + drift if next_time_to_run
 | 
	
		
			
				|  |  | -                   else max_interval, max_interval)
 | 
	
		
			
				|  |  | +        return min(adjust(next_time_to_run) or max_interval, max_interval)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def should_sync(self):
 | 
	
		
			
				|  |  |          return (
 |