ソースを参照

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
 
             t.apply_after(300, set_done)
+            mss = 0
             while not done[0]:
+                if mss >= 2.0:
+                    raise Exception('test timed out')
                 time.sleep(0.1)
+                mss += 0.1
         finally:
             t.stop()
 

+ 3 - 4
celery/utils/timer2.py

@@ -14,7 +14,7 @@ import os
 import sys
 import threading
 
-from datetime import datetime, timedelta
+from datetime import datetime
 from functools import wraps
 from itertools import count, imap
 from time import time, sleep
@@ -114,7 +114,7 @@ class Schedule(object):
 
         """
         if eta is None:
-            eta = datetime.now()
+            eta = time()
         if isinstance(eta, datetime):
             try:
                 eta = to_timestamp(eta)
@@ -132,8 +132,7 @@ class Schedule(object):
         return self.enter(self.Entry(fun, args, kwargs), eta, priority)
 
     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):
         return self.enter_after(msecs, self.Entry(fun, args, kwargs), priority)