Skip to content

SKY-ALIN/regta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

regta

Production-ready scheduler with async, multithreading and multiprocessing support for Python.

versions Code Quality PyPI version license

Core Features

  • Various Job Types - Create async, thread-based, or process-based jobs depending on your goals.

  • Flexible Intervals - Use standard timedelta or specially designed Period for highly responsible jobs.

  • Multi-Paradigm - Design OOP styled or functional styled jobs.

  • CLI Interface - Regta provides a CLI tool to start, list and create jobs by template.

  • Professional Logging - Redefine standard logger and define your own. ANSI coloring is supported.

You may discover scheduling alternatives and find the comparison with Regta on regta.alinsky.tech/alternatives


Installation

Install using pip install regta or poetry add regta.

If you use python < 3.9, then also install backports: pip install "backports.zoneinfo[tzdata]".

You can check if Regta was installed correctly with the following command regta --version.

Example

To write async job just use @regta.async_job() decorator.

# jobs/my_jobs.py

from datetime import timedelta
from regta import async_job, Period


@async_job(Period().every(10).seconds)
async def my_period_based_job():
    return "1. Hello world! This is just a log message."


@async_job(timedelta(seconds=10))
async def my_timedelta_based_job():
    return "2. You may use `timedelta` or `Period` as interval."


@async_job(Period().on.sunday.at("18:35").by("Asia/Almaty"))
async def my_sunday_job():
    return "3. `Period` is recommended for highly responsible jobs because it does not accumulate shift."

Read more about various job types here.

Start Up

To start jobs use regta run command:

$ regta run
> [3] jobs were found.
> 2023-01-08 18:31:00,005 [jobs.my_jobs:my_period_based_job] [INFO] - 1. Hello world! This is just a log message.
> 2023-01-08 18:31:05,622 [jobs.my_jobs:my_timedelta_based_job] [INFO] - 2. You may use `timedelta` or `Period` as interval.
.  .  .
> 2023-01-08 18:34:50,002 [jobs.my_jobs:my_period_based_job] [INFO] - 1. Hello world! This is just a log message.
> 2023-01-08 18:34:55,689 [jobs.my_jobs:my_timedelta_based_job] [INFO] - 2. You may use `timedelta` or `Period` as interval.
> 2023-01-08 18:35:00,001 [jobs.my_jobs:my_sunday_job] [INFO] - 3. `Period` is recommended for highly responsible jobs because it does not accumulate shift.
.  .  .

Read CLI reference here.


Full documentation and reference are available on regta.alinsky.tech