Libary for repeated execution of functions at specific times.
Project description
REPeated TASK ORGanizer - reptaskorg
Libary for repeated execution of functions at specific times.
Examples:
-
Every minute, when seconds 5 and 34 are reached:
task = RepTaskOrg(second=[5, 34]) # 00:00:05, 00:00:34, 00:01:05, ...
-
Every day, when hours 2, 8 and 12 and seconds 5 and 34 are reached:
task = RepTaskOrg(hour=[2, 8, 12], second=[5, 34]) # 02:00:05, 02:00:34, 08:00:05, ...
-
Every year, at the first second of may:
task = RepTaskOrg(month=[5]) # 2021.05.01 00:00:00, 2022.05.01 00:00:00, ...
-
Every monday at 8 am:
task = RepTaskOrg(weekday=[0], hour=[8]) # 2021.05.03 08:00:00, 2022.05.10 08:00:00, ...
Table of Contents
Install
For installation use Pypi:
pip install reptaskorg
or pip3 install reptaskorg
Usage
without threading
If you have no time-consuming tasks in your main loop RapTaskOrg is a good solution.
import datetime
import time
from reptaskorg import RepTaskOrg
def do_something(alarm_number):
print('{} - ALARM {}'.format(datetime.datetime.now().strftime('%H:%M:%S:%f'), alarm_number))
def main():
# Define tasks with desired time stamps.
task_1 = RepTaskOrg(second=[0, 10, 20, 30, 40, 50])
task_2 = RepTaskOrg(
minute=[37, 39],
second=[0, 10, 20, 30, 40, 50]
)
# Call Task repeatedly to keep it up to date.
while True:
# Outputs true as soon as the target time is reached
if task_1.check_task():
do_something(1)
if task_2.check_task():
do_something(2)
time.sleep(0.001)
if __name__ == "__main__":
main()
with threading
If you have time-consuming tasks in your main loop use RepTaskOrgTH. Here a separate thread is started for each task.
import datetime
import time
from reptaskorg import RepTaskOrgTH
def do_something(alarm_number):
"""Function which should be executed repeatedly."""
print('{} - ALARM {}'.format(
datetime.datetime.now().strftime('%H:%M:%S:%f'),
alarm_number
))
def do_anotherthing(alarm_number, alarm_comment):
"""Function which should be executed repeatedly with multiple arguments."""
print('{} - ALARM {} {}'.format(
datetime.datetime.now().strftime('%H:%M:%S:%f'),
alarm_number,
alarm_comment
))
def main():
"""Main-Function."""
# Define tasks with desired time stamps.
task_1 = RepTaskOrgTH(do_something, 1, second=[0, 10, 20, 30, 40, 50])
# Define multiple arguments for given function at task
task_2 = RepTaskOrgTH(do_anotherthing, 2, 'test_2', minute=[33, 34, 36], second=[0, 10, 20, 30, 40, 50])
# Main-loop for other tasks
while True:
time.sleep(0.001)
if __name__ == "__main__":
main()
other features
You can stop and restart task-threads by:
# stop task
task.stop_task()
# restart task
task.restart_task()
Information on the set timer are showed by:
print(task.every_year)
print(task.every_month)
print(task.every_weekday)
print(task.every_day)
print(task.every_hour)
print(task.every_minute)
print(task.every_second)
By default, the Libary uses the current system time. You can set a UTC-time-offset by:
# UTC
task_1 = RepTaskOrg(second=[0, 10, 20, 30, 40, 50], offset_hour=0, offset_minute=0)
task_2 = RepTaskOrgTH(do_something, 1, second=[0, 10, 20, 30, 40, 50], offset_hour=0, offset_minute=0)
# United States (Pacific Time Zone) = UTC -08:00
task_3 = RepTaskOrg(second=[0, 10, 20, 30, 40, 50], offset_hour=-8, offset_minute=0)
task_4 = RepTaskOrgTH(do_something, 1, second=[0, 10, 20, 30, 40, 50], offset_hour=-8, offset_minute=0)
Arguments
You can define a task with the arguments in the following chapters.
RepTaskOrg:
Args:
year (list, optional): valid year. Defaults to None.
month (list, optional): valid month. Defaults to None.
weekday (set, optional): valide day of week. Defaults to None.
day (list, optional): valid day. Defaults to None.
hour (list, optional): valid hours. Defaults to None.
minute (list, optional): valid minute. Defaults to None.
second (list, optional): valid second. Defaults to None.
offset_hour (int, optional): valide hour for offset. Defaults to 0.
offset_minute (int, optional): valide minute for offset. Defaults to 0.
RepTaskOrgTH:
Args:
function (function): function to execute.
function_arguments (tuple): parameters of the given function.
year (set, optional): valid year. Defaults to None.
month (set, optional): valid month. Defaults to None.
weekday (set, optional): valide day of week. Defaults to None.
day (set, optional): valid day. Defaults to None.
hour (set, optional): valid hour. Defaults to None.
minute (set, optional): valid minute. Defaults to None.
second (set, optional): valid second. Defaults to None.
offset_hour (int, optional): valide hour for offset. Defaults to 0.
offset_minute (int, optional): valide minute for offset. Defaults to 0.
MIT License Copyright (c) 2021 Cedric Klimt
Project details
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 reptaskorg-0.2.1.tar.gz
.
File metadata
- Download URL: reptaskorg-0.2.1.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3745c58e3eed2ce9b15bd59779537099f267a2ea43af993abb71792bc12f89c3 |
|
MD5 | 22a719550b5a9a728290d95fe94850d4 |
|
BLAKE2b-256 | 2553e19a1990988bf0073d6d80936d0cd4e5db42a3c1e868c1b7e7ba70b89552 |
File details
Details for the file reptaskorg-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: reptaskorg-0.2.1-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f59a4491f16c90940a724707dabd4f1e886003729952312150e2a66a930e198 |
|
MD5 | f06ba1acaa6055ee3e02298947ea8a8c |
|
BLAKE2b-256 | 7987aa6358baf2383f179c731b7ca824d37354b273607246f51a89dd25a2cc41 |