From f8db937643e41dea51254fbd39a08219072ec602 Mon Sep 17 00:00:00 2001 From: Stefan Harmuth Date: Sun, 5 Dec 2021 10:08:38 +0100 Subject: [PATCH] simple scheduler to be called from daemon processes or similar --- schedule.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 schedule.py 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'])