https://github.com/sky-alin/regta
📅 Production-ready scheduler with async, multithreading and multiprocessing support for Python
https://github.com/sky-alin/regta
asyncio multiprocessing multithreading python scheduler
Last synced: about 1 year ago
JSON representation
📅 Production-ready scheduler with async, multithreading and multiprocessing support for Python
- Host: GitHub
- URL: https://github.com/sky-alin/regta
- Owner: SKY-ALIN
- License: mit
- Created: 2021-11-22T19:33:03.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-07-06T00:28:56.000Z (almost 2 years ago)
- Last Synced: 2025-04-25T02:05:50.135Z (about 1 year ago)
- Topics: asyncio, multiprocessing, multithreading, python, scheduler
- Language: Python
- Homepage: https://regta.alinsky.tech
- Size: 636 KB
- Stars: 22
- Watchers: 2
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# regta
**Production-ready scheduler with async, multithreading and multiprocessing support for Python.**
[](https://github.com/SKY-ALIN/regta)

[](https://pypi.org/project/regta/)
[](https://github.com/SKY-ALIN/regta/blob/main/LICENSE)
### Core Features
- **[Various Job Types](https://regta.alinsky.tech/user_guide/make_jobs)** - Create async, thread-based,
or process-based jobs depending on your goals.
- **[Flexible Intervals](https://regta.alinsky.tech/user_guide/interval_types)** - Use standard `timedelta`
or specially designed `Period` for highly responsible jobs.
- **[Multi-Paradigm](https://regta.alinsky.tech/user_guide/oop_style)** - Design OOP styled
or functional styled jobs.
- **[CLI Interface](https://regta.alinsky.tech/cli_reference)** - Regta provides a CLI tool
to start, list and create jobs by template.
- **[Professional Logging](https://regta.alinsky.tech/user_guide/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](https://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.
```python
# 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](https://regta.alinsky.tech/user_guide/make_jobs).
### Start Up
To start jobs use `regta run` command:
```shell
$ 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](https://regta.alinsky.tech/cli_reference).
---
Full documentation and reference are available on
[regta.alinsky.tech](https://regta.alinsky.tech)