@@ -59,8 +59,9 @@ def __init__(
5959 self ._day = day
6060 self ._task = task
6161
62- async def run (self ) -> None :
62+ def run (self ) -> None :
6363 self ._spawn_loop .start ()
64+ print (f"Schedule { self ._task } started" )
6465
6566 @loop ()
6667 async def _spawn_loop (self ):
@@ -132,33 +133,43 @@ def cancel(self) -> None:
132133class Scheduler :
133134 schedules : dict [str , Schedule ]
134135
135- def __init__ (self ) -> None :
136- self .schedules = {}
136+ def __init__ (self , schedules : dict [str , Schedule ]) -> None :
137+ self .schedules = schedules
138+
139+ def has (self , key : str ) -> bool :
140+ return key in self .schedules
137141
138142 async def spawn_schedule (self , key : str , schedule : Schedule ):
139- if key in self .schedules :
143+ if self .has ( key ) :
140144 raise KeyError (f"Schedule with key { key } already exists" )
141145 self .schedules [key ] = schedule
142146
143- await schedule .run ()
147+ schedule .run ()
144148
145149 def cancel_schedule (self , key : str ) -> None :
146- if key not in self .schedules :
150+ if not self .has ( key ) :
147151 raise KeyError (f"Schedule with key { key } does not exist" )
148152
149153 if self .schedules [key ].is_running ():
150154 self .schedules [key ].cancel ()
151155
152156 async def resume_schedule (self , key : str ) -> None :
153- if key not in self .schedules :
157+ if not self .has ( key ) :
154158 raise KeyError (f"Schedule with key { key } does not exist" )
155159
156160 if not self .schedules [key ].is_running ():
157- await self .schedules [key ].run ()
161+ self .schedules [key ].run ()
158162
159163 def remove_schedule (self , key : str ) -> None :
160- if key not in self .schedules :
164+ if not self .has ( key ) :
161165 raise KeyError (f"Schedule with key { key } does not exist" )
162166
163167 self .cancel_schedule (key )
164168 self .schedules .pop (key )
169+
170+ def restart_schedule (self , key : str ) -> None :
171+ if not self .has (key ):
172+ raise KeyError (f"Schedule with key { key } does not exist" )
173+
174+ self .schedules [key ].cancel ()
175+ self .schedules [key ].reschedule ()
0 commit comments