Skip to main content

Simplified, scalable task scheduling with typechecking.

Project description

beatdrop

beatdrop drop logo

See the full Documentation.

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.

$ 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.0a5] - 2023-02-06

Fixed

  • packaging files
  • README Links

[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.0a5.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

beatdrop-0.1.0a5-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for beatdrop-0.1.0a5.tar.gz
Algorithm Hash digest
SHA256 94fa67d0a0322b3697abe512bf7a071b0b3f2c6842ad88ce946610fcc9eace8d
MD5 5b2c6170c2c990c0c98a6c1ea28a4cfe
BLAKE2b-256 3a829e48ba6175a21f28e031d6d9b0b3869552ad5ebfe28bba9d4f298ea10912

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for beatdrop-0.1.0a5-py3-none-any.whl
Algorithm Hash digest
SHA256 2fea086e40e374d9bbb7da2ec3fc09ede4e152ef97227051830b56003039ea4e
MD5 a05c561b4cc73af91e01717df16e4d02
BLAKE2b-256 4d8854c53bf8accd1f2fca040f216e8381907951f08faaf6a8d7254204b43ce2

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