Browse Source

Fixes timer tests

Ask Solem 12 years ago
parent
commit
e22ab7e64a
2 changed files with 7 additions and 4 deletions
  1. 4 0
      celery/tests/utilities/test_timer2.py
  2. 3 4
      celery/utils/timer2.py

+ 4 - 0
celery/tests/utilities/test_timer2.py

@@ -82,8 +82,12 @@ class test_Timer(Case):
                 done[0] = True
                 done[0] = True
 
 
             t.apply_after(300, set_done)
             t.apply_after(300, set_done)
+            mss = 0
             while not done[0]:
             while not done[0]:
+                if mss >= 2.0:
+                    raise Exception('test timed out')
                 time.sleep(0.1)
                 time.sleep(0.1)
+                mss += 0.1
         finally:
         finally:
             t.stop()
             t.stop()
 
 

+ 3 - 4
celery/utils/timer2.py

@@ -14,7 +14,7 @@ import os
 import sys
 import sys
 import threading
 import threading
 
 
-from datetime import datetime, timedelta
+from datetime import datetime
 from functools import wraps
 from functools import wraps
 from itertools import count, imap
 from itertools import count, imap
 from time import time, sleep
 from time import time, sleep
@@ -114,7 +114,7 @@ class Schedule(object):
 
 
         """
         """
         if eta is None:
         if eta is None:
-            eta = datetime.now()
+            eta = time()
         if isinstance(eta, datetime):
         if isinstance(eta, datetime):
             try:
             try:
                 eta = to_timestamp(eta)
                 eta = to_timestamp(eta)
@@ -132,8 +132,7 @@ class Schedule(object):
         return self.enter(self.Entry(fun, args, kwargs), eta, priority)
         return self.enter(self.Entry(fun, args, kwargs), eta, priority)
 
 
     def enter_after(self, msecs, entry, priority=0):
     def enter_after(self, msecs, entry, priority=0):
-        eta = datetime.now() + timedelta(seconds=msecs / 1000.0)
-        return self.enter(entry, eta, priority)
+        return self.enter(entry, time() + (msecs / 1000.0), priority)
 
 
     def apply_after(self, msecs, fun, args=(), kwargs={}, priority=0):
     def apply_after(self, msecs, fun, args=(), kwargs={}, priority=0):
         return self.enter_after(msecs, self.Entry(fun, args, kwargs), priority)
         return self.enter_after(msecs, self.Entry(fun, args, kwargs), priority)