浏览代码

Fixes timer tests

Ask Solem 12 年之前
父节点
当前提交
e22ab7e64a
共有 2 个文件被更改,包括 7 次插入4 次删除
  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)