@@ -241,7 +241,8 @@ class CronTask(object):
241241 _GEN = generator .CachedUUID ()
242242
243243 def __init__ (
244- self , name , pytz_timezone , timer_dict , function , * args , ** kwargs
244+ self , name , pytz_timezone , timer_dict , md5uuid ,
245+ function , * args , ** kwargs
245246 ):
246247 """
247248 :param pytz_timezone:
@@ -284,7 +285,11 @@ def __init__(
284285 self ._timer_params = self ._generate_timer_params (self ._timer_dict )
285286 self ._check_param_valids (self ._timer_params )
286287 self ._lastsched_time = None
287- self ._md5_id = self ._GEN .get_uuid ()[0 ]
288+ if md5uuid is None :
289+ self ._md5_id = self ._GEN .get_uuid ()[0 ]
290+ else :
291+ self ._md5_id = md5uuid
292+ self ._timer = None
288293
289294 def get_funcargs (self ):
290295 """return (function, args, kwargs)"""
@@ -521,6 +526,14 @@ def __repr__(self):
521526 """return info of the crontask"""
522527 return 'CronTask(ID:{0} Name:{1})' .format (self .taskid (), self ._name )
523528
529+ def set_timer (self , timer ):
530+ """set timer to this crontask"""
531+ self ._timer = timer
532+
533+ def get_timer (self ):
534+ """return timer of the crontask"""
535+ return self ._timer
536+
524537
525538class CronExecution (ExecutionService ):
526539 """
@@ -613,6 +626,7 @@ def delay_exec(self,
613626 delay_time_insec , self ._do_delay_exe ,
614627 [task_data ]
615628 )
629+ crontask .set_timer (timer )
616630 timer .start ()
617631
618632 def schedule (self , crontask ):
@@ -656,4 +670,13 @@ def schedule(self, crontask):
656670 )
657671 self ._task_dict [crontask .taskid ()] = crontask
658672
673+ def calcel_delay_exec (self , taskid ):
674+ """calcel delayexec by taskid"""
675+ task = self ._task_dict .get (taskid , None )
676+ if task is None :
677+ log .warn ('delay exec task id {0} not found' .format (taskid ))
678+ return
679+ timer = task .get_timer ()
680+ timer .cancel ()
681+
659682# vi:set tw=0 ts=4 sw=4 nowrap fdm=indent
0 commit comments