88import traceback
99from multiprocessing .util import Finalize
1010
11+ from timer2 import Timer
12+
1113from celery import conf
14+ from celery import log
1215from celery import registry
1316from celery import platform
1417from celery import signals
1821
1922from celery .worker import state
2023from celery .worker .buckets import TaskBucket , FastQueue
21- from celery .worker .scheduler import Scheduler
2224
2325RUN = 0x1
2426CLOSE = 0x2
@@ -141,6 +143,8 @@ def __init__(self, concurrency=None, logfile=None, loglevel=None,
141143 self .task_soft_time_limit = task_soft_time_limit
142144 self .max_tasks_per_child = max_tasks_per_child
143145 self .pool_putlocks = pool_putlocks
146+ self .timer_debug = log .SilenceRepeated (self .logger .debug ,
147+ max_iterations = 10 )
144148 self .db = db
145149 self ._finalize = Finalize (self , self .stop , exitpriority = 1 )
146150
@@ -153,7 +157,6 @@ def __init__(self, concurrency=None, logfile=None, loglevel=None,
153157 self .ready_queue = FastQueue ()
154158 else :
155159 self .ready_queue = TaskBucket (task_registry = registry .tasks )
156- self .eta_schedule = Scheduler (self .ready_queue , logger = self .logger )
157160
158161 self .logger .debug ("Instantiating thread components..." )
159162
@@ -169,7 +172,9 @@ def __init__(self, concurrency=None, logfile=None, loglevel=None,
169172 callback = self .process_task ,
170173 logger = self .logger )
171174 self .scheduler = instantiate (eta_scheduler_cls ,
172- self .eta_schedule , logger = self .logger )
175+ precision = conf .CELERYD_ETA_SCHEDULER_PRECISION ,
176+ on_error = self .on_timer_error ,
177+ on_tick = self .on_timer_tick )
173178
174179 self .clockservice = None
175180 if self .embed_clockservice :
@@ -179,7 +184,7 @@ def __init__(self, concurrency=None, logfile=None, loglevel=None,
179184 prefetch_count = self .concurrency * conf .CELERYD_PREFETCH_MULTIPLIER
180185 self .listener = instantiate (listener_cls ,
181186 self .ready_queue ,
182- self .eta_schedule ,
187+ self .scheduler ,
183188 logger = self .logger ,
184189 hostname = self .hostname ,
185190 send_events = self .send_events ,
@@ -247,3 +252,11 @@ def _shutdown(self, warm=True):
247252
248253 self .listener .close_connection ()
249254 self ._state = TERMINATE
255+
256+ def on_timer_error (self , exc_info ):
257+ _ , exc , _ = exc_info
258+ self .logger .error ("Timer error: %r" % (exc , ))
259+
260+ def on_timer_tick (self , delay ):
261+ self .timer_debug ("Scheduler wake-up! Next eta %s secs." % delay )
262+
0 commit comments