An elegant way to run period tasks.
Project description
Timeloop-NG
Timeloop-NG (for next generation) is a service that can be used to run periodic tasks after a certain interval.
It's the successor of timeloop from Sankalp Jonna as pull requests were never accepted.
Each job runs on a separate thread and when the service is shut down, it waits till all tasks currently being executed are completed.
Installation
pip install timeloop-ng
Writing jobs
The jobs run the first time after the first wait interval.
import time
from timeloop import Timeloop
from datetime import timedelta
tl = Timeloop()
@tl.job(interval=timedelta(seconds=2))
def sample_job_every_2s():
print("2s job current time : {}".format(time.ctime()))
@tl.job(interval=timedelta(seconds=5))
def sample_job_every_5s():
print("5s job current time : {}".format(time.ctime()))
@tl.job(interval=timedelta(seconds=10))
def sample_job_every_10s():
print("10s job current time : {}".format(time.ctime()))
Jobs that only run a certain amount of time
By default, all jobs run until they are stopped. At times you may want to run a job only once or twice.
import time
from timeloop import Timeloop
from datetime import timedelta
tl = Timeloop()
@tl.job(interval=timedelta(seconds=10), num_executions=2)
def run_me_twice_with_10s_pause():
print("10s job current time : {}".format(time.ctime()))
Jobs with a different initial interval
At times, you want
@tl.job(interval=timedelta(seconds=1), initial_delay=timedelta(seconds=10))
def run_after10s_and_then_every_second():
print("job current time : {}".format(time.ctime()))
@tl.job(interval=timedelta(seconds=1), num_executions=2, initial_delay=timedelta(seconds=10))
def run_after10s_and_then_after_1second_then_stop():
print("job current time : {}".format(time.ctime()))
Start time loop in separate thread
By default timeloop starts in a separate thread.
Please do not forget to call tl.stop
before exiting the program, Or else the jobs wont shut down gracefully.
tl.start()
while True:
try:
time.sleep(1)
except KeyboardInterrupt:
tl.stop()
break
Start time loop in main thread
Doing this will automatically shut down the jobs gracefully when the program is killed, so no need to call tl.stop
tl.start(block=True)
Author
- Sankalp Jonna (author of the original version)
- Christoph Becker aka tuergeist
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for timeloop_ng-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d8349b3212ef96a53de7c3568c61ae6e186206263c9408db143fd35607d47cf |
|
MD5 | 7ffc44aaf337ff49ad28f176b64fe289 |
|
BLAKE2b-256 | c698064e18f6cda5f7cd62286a15126fc154701b6d42cc6a5e2ea943360c3254 |