Bläddra i källkod

Beat: Wake up 0.010 seconds earlier to adjust lateness

Ask Solem 10 år sedan
förälder
incheckning
5780aacb33
1 ändrade filer med 6 tillägg och 4 borttagningar
  1. 6 4
      celery/beat.py

+ 6 - 4
celery/beat.py

@@ -447,7 +447,7 @@ class Service(object):
         return self.__class__, (self.max_interval, self.schedule_filename,
                                 self.scheduler_cls, self.app)
 
-    def start(self, embedded_process=False):
+    def start(self, embedded_process=False, drift=-0.010):
         info('beat: Starting...')
         debug('beat: Ticking with max interval->%s',
               humanize_seconds(self.scheduler.max_interval))
@@ -460,9 +460,11 @@ class Service(object):
         try:
             while not self._is_shutdown.is_set():
                 interval = self.scheduler.tick()
-                debug('beat: Waking up %s.',
-                      humanize_seconds(interval, prefix='in '))
-                time.sleep(interval)
+                interval = interval + drift if interval else interval
+                if interval and interval > 0:
+                    debug('beat: Waking up %s.',
+                        humanize_seconds(interval, prefix='in '))
+                    time.sleep(interval)
         except (KeyboardInterrupt, SystemExit):
             self._is_shutdown.set()
         finally: