Simplified, resilient schedulers with typechecking.
Project description
beatdrop
The goal of beatdrop
is to provide easy to use schedulers and schedule entries that are extensible, scalable, and backend agnostic.
It does not run tasks or python functions on a schedule. It will simply interface with task backends to send tasks when they are due.
Installation
Install the base package with pip
$ pip install beatdrop
For particular schedulers and backends you will also need to install their extra dependencies.
$ pip install beatdrop[redis]
Extra dependencies for task backends:
celery
Extra dependencies for scheduler storage:
-
redis
-
sql
The all
extra dependency will install all extra dependencies for task backends and scheduler storage.
$ pip install beatdrop[all]
Usage
There are 2 main pieces to using beatdrop
.
-
Schedule Entry - Hold the task definition along with scheduling info.
-
Schedulers - These perform 2 main roles.
- They can be run as a scheduler ie monitor and send tasks to the task backend.
- Act as clients for reading and writing schedule entries.
Simple example:
from beatdrop import CeleryRedisScheduler, IntervalEntry
from celery import Celery
celery_app = Celery()
# Create a scheduler
sched = CeleryRedisScheduler(
max_interval=60,
celery_app=celery_app,
lock_timeout=180,
redis_py_kwargs={
"host": "my.redis.host",
"port": 6379,
"db": 0,
"password": "mys3cr3t"
}
)
# create a schedule entry
inter = IntervalEntry(
key="my-interval-entry",
enabled=True,
task="test_task",
args=("my_args", 123),
kwargs={
"my_kwargs": 12.4
},
period=10
)
# save or update an entry
sched.save(inter)
# list all entries, this will automatically paginate
schedule_entries = sched.list()
# retrieve a specific entry
my_inter_entry = sched.get(inter.key)
# equivalent to the line above
my_inter_entry = sched.get("my-interval-entry")
# Delete an entry from the scheduler
sched.delete(inter)
Development
After cloning the repo, install in development mode with the dev
and all
extra dependencies from local clone:
$ pip install -e .[dev,all]
Run tests
$ pytest -vvv --cov=beatdrop --cov-report html tests/unit
Changelog
Changelog for beatdrop
.
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased] - YYYY-MM-DD
Added
Changed
Deprecated
Removed
Fixed
Security
[0.1.0a1] - 2023-01-DD
Initial release
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 beatdrop-0.1.0a1.tar.gz
.
File metadata
- Download URL: beatdrop-0.1.0a1.tar.gz
- Upload date:
- Size: 19.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14c6c24af760908edd143438ab44dbe492253b07933540868344dcf55bd923ea |
|
MD5 | 71cba0901f3c5bc5f5db77f41abfefb3 |
|
BLAKE2b-256 | d7b95c3590a13e1cacf2108cf125806935f7375ce3a771346466b07c17e40c9e |
File details
Details for the file beatdrop-0.1.0a1-py3-none-any.whl
.
File metadata
- Download URL: beatdrop-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 30.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0cd454a304999fa37bbcfc3e649b328ff36a7bc3e8809d704931d87ee4cb525 |
|
MD5 | b55f225f4688aead53772bc38d9f4555 |
|
BLAKE2b-256 | 0cee40dc9eb7d40392dc938d5a825beb73c9e11d7722b395235b7b4768ca2112 |