From 5aa4e2ee15a763dd8150be15cc0c748d036b341a Mon Sep 17 00:00:00 2001 From: Taylor Date: Wed, 18 Aug 2021 17:43:58 -0600 Subject: [PATCH] added delay_seconds parameter to run_pending --- schedule/__init__.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/schedule/__init__.py b/schedule/__init__.py index 83a95815..132c3bd9 100644 --- a/schedule/__init__.py +++ b/schedule/__init__.py @@ -85,7 +85,7 @@ class Scheduler(object): def __init__(self) -> None: self.jobs: List[Job] = [] - def run_pending(self) -> None: + def run_pending(self, delay_seconds: int = 0) -> None: """ Run all jobs that are scheduled to run. @@ -94,10 +94,17 @@ def run_pending(self) -> None: that should run every minute and you only call run_pending() in one hour increments then your job won't be run 60 times in between but only once. + + A delay of `delay` seconds is added between each job. This helps + distribute system load generated by the jobs more evenly + over time. + + :param delay_seconds: A delay added between every executed job """ runnable_jobs = (job for job in self.jobs if job.should_run) for job in sorted(runnable_jobs): self._run_job(job) + time.sleep(delay_seconds) def run_all(self, delay_seconds: int = 0) -> None: """ @@ -773,11 +780,11 @@ def every(interval: int = 1) -> Job: return default_scheduler.every(interval) -def run_pending() -> None: +def run_pending(delay_seconds: int = 0) -> None: """Calls :meth:`run_pending ` on the :data:`default scheduler instance `. """ - default_scheduler.run_pending() + default_scheduler.run_pending(delay_seconds=delay_seconds) def run_all(delay_seconds: int = 0) -> None: