Skip to main content

Simplified, scalable task scheduling with typechecking.

Project description

beatdrop

beatdrop drop logo

The goal of beatdrop is to provide schedulers and schedule entries that are easy to use, 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 from PyPi https://pypi.org/project/beatdrop/.

$ 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 - holds the task definition along with scheduling info.

  • Schedulers - has 2 main functions.

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

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.

[0.1.0a4] - 2023-02-05

Fixed

Docstrings updated and documentation added.

[0.1.0a3] - 2023-01-18

Update for pypi formatting.

[0.1.0a2] - 2023-01-17

Update for pypi formatting.

[0.1.0a1] - 2023-01-17

Initial release

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

beatdrop-0.1.0a4.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

beatdrop-0.1.0a4-py3-none-any.whl (31.1 kB view details)

Uploaded Python 3

File details

Details for the file beatdrop-0.1.0a4.tar.gz.

File metadata

  • Download URL: beatdrop-0.1.0a4.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for beatdrop-0.1.0a4.tar.gz
Algorithm Hash digest
SHA256 02143a76065dab0703743ab9ebb017ceeacba77f598e6ac05229eec9d5650efb
MD5 7d6c6703f8b46026eee6021ae044bf06
BLAKE2b-256 63a0775f86297ee8569ec7524e8a7fdb89bbcb7f895dd1e3b2d43b1f8319fe05

See more details on using hashes here.

File details

Details for the file beatdrop-0.1.0a4-py3-none-any.whl.

File metadata

  • Download URL: beatdrop-0.1.0a4-py3-none-any.whl
  • Upload date:
  • Size: 31.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for beatdrop-0.1.0a4-py3-none-any.whl
Algorithm Hash digest
SHA256 9289418f12035103e73dcd37d8f219b00109b9dc36d2abb4f3a828bbf6e8b03c
MD5 b4e73769f4f8f49f843d1d2560707465
BLAKE2b-256 46defff2084f8ca023f3f38a7d3ae8f66b2003850f32b556ad951ca2962e96a9

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