diff --git a/schedule.py b/schedule.py new file mode 100644 index 0000000..d26c357 --- /dev/null +++ b/schedule.py @@ -0,0 +1,22 @@ +import datetime +from typing import Callable, List, Any + + +class Scheduler: + def __init__(self): + self.jobs = [] + + def schedule(self, timedelta: datetime.timedelta, func: Callable, *args: List[Any]): + self.jobs.append({ + 'func': func, + 'args': args, + 'timedelta': timedelta, + 'runat': (datetime.datetime.utcnow() + timedelta) + }) + + def run_pending(self): + now = datetime.datetime.utcnow() + for job in self.jobs: + if job['runat'] <= now: + job['runat'] += job['timedelta'] + job['func'](*job['args'])