Skip to main content

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 hour 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, ...
    

Installation

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.

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()

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_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.
    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.
    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.

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

reptaskorg-0.2.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

reptaskorg-0.2-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file reptaskorg-0.2.tar.gz.

File metadata

  • Download URL: reptaskorg-0.2.tar.gz
  • Upload date:
  • Size: 6.2 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

Hashes for reptaskorg-0.2.tar.gz
Algorithm Hash digest
SHA256 db8eceb25a93fe3152cd384ecfaf962a3e3fa4c82ffd7ba02247763606325a9a
MD5 bd0a237cd0c570de6d6fd3975e8dce01
BLAKE2b-256 7262d5ba084757ddd29b1b5a8ebdf07daf92f4b827d065424e0f9fdca534f5b9

See more details on using hashes here.

File details

Details for the file reptaskorg-0.2-py3-none-any.whl.

File metadata

  • Download URL: reptaskorg-0.2-py3-none-any.whl
  • Upload date:
  • Size: 5.5 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

Hashes for reptaskorg-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 120d8fa3a529335a3cb107263edc38c009454a9b964188f3ae70144e1989a03e
MD5 d03767652e07c34c45fc0762a17a0302
BLAKE2b-256 588ec7ea17674dff4c5286bda29aac9fe468d0907f63630bb3dbb476ce928f3b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page