Browse Source

eventlet: Now properly schedules tasks with an ETA in the past

Ask Solem 14 years ago
parent
commit
d7dbd5751c
1 changed files with 2 additions and 2 deletions
  1. 2 2
      celery/concurrency/evlet.py

+ 2 - 2
celery/concurrency/evlet.py

@@ -33,7 +33,7 @@ class Schedule(timer2.Schedule):
 
 
     def enter(self, entry, eta=None, priority=0):
     def enter(self, entry, eta=None, priority=0):
         try:
         try:
-            timer2.to_timestamp(eta)
+            eta = timer2.to_timestamp(eta)
         except OverflowError:
         except OverflowError:
             if not self.handle_error(sys.exc_info()):
             if not self.handle_error(sys.exc_info()):
                 raise
                 raise
@@ -41,7 +41,7 @@ class Schedule(timer2.Schedule):
         now = time()
         now = time()
         if eta is None:
         if eta is None:
             eta = now
             eta = now
-        secs = eta - now
+        secs = max(eta - now, 0)
 
 
         g = self._spawn_after_local(secs, entry)
         g = self._spawn_after_local(secs, entry)
         self._queue.add(g)
         self._queue.add(g)