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
File details
Details for the file timeloop-ng-1.0.0.tar.gz
.
File metadata
- Download URL: timeloop-ng-1.0.0.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fd07e2aa852ab3402b0243aaabfa4993bd50ab0ecbdd92567d8ec301b666022 |
|
MD5 | 89ba450ff2c987d54924f25cfe89c9de |
|
BLAKE2b-256 | 31385a30ca30074eb5a110c3aadf6e399120287223865cf45f4e58777cf303d5 |
File details
Details for the file timeloop_ng-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: timeloop_ng-1.0.0-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d8349b3212ef96a53de7c3568c61ae6e186206263c9408db143fd35607d47cf |
|
MD5 | 7ffc44aaf337ff49ad28f176b64fe289 |
|
BLAKE2b-256 | c698064e18f6cda5f7cd62286a15126fc154701b6d42cc6a5e2ea943360c3254 |