1414
1515class Scheduler (Generic [T ]):
1616
17- def schedule (self , data : T | None = None , interval : float = 60 , one_shot : bool = False ) -> None :
17+ def schedule_periodic (self , data : T | None = None , interval : float | None = None ) -> None :
18+ raise NotImplementedError ()
19+
20+ def schedule_one_shot (self , data : T | None = None , interval : float | None = None ) -> None :
1821 raise NotImplementedError ()
1922
2023 def stop (self ) -> None :
@@ -23,22 +26,25 @@ def stop(self) -> None:
2326
2427class AbstractScheduler (Scheduler [T ]):
2528
26- def __init__ (self , timer : IReusableTimer ) -> None :
29+ def __init__ (self , timer : IReusableTimer , interval : float = 60 ) -> None :
2730 self ._timer = timer
31+ self ._interval = interval
2832
2933 def __enter__ (self ) -> Scheduler [T ]:
3034 return self
3135
3236 def __exit__ (self , exc_type : Any , exc_val : Any , exc_tb : Any ) -> None :
3337 self .stop ()
3438
35- def schedule (self , data : T | None = None , interval : float = 60 , one_shot : bool = False ) -> None :
36- if one_shot :
37- self ._timer .start (interval , self ._execute , [data ])
38- log .info ('One-shot execution scheduled' , data = data , interval = interval )
39- else :
40- self ._timer .start (interval , self ._execute_and_restart , [data ])
41- log .info ('Periodic execution scheduled' , data = data , interval = interval )
39+ def schedule_periodic (self , data : T | None = None , interval : float | None = None ) -> None :
40+ interval = interval or self ._interval
41+ self ._timer .start (interval , self ._execute_and_restart , [data ])
42+ log .info ('Periodic execution scheduled' , data = data , interval = interval )
43+
44+ def schedule_one_shot (self , data : T | None = None , interval : float | None = None ) -> None :
45+ interval = interval or self ._interval
46+ self ._timer .start (interval , self ._execute , [data ])
47+ log .info ('One-shot execution scheduled' , data = data , interval = interval )
4248
4349 def stop (self ) -> None :
4450 self ._timer .cancel ()
0 commit comments