Skip to main content

Cron style scheduler for asynchronous Dramatiq tasks in Django.

Project description

Dramatiq Crontab

dramtiq-crontab logo: person in front of a schedule

Cron style scheduler for asynchronous Dramatiq tasks in Django.

  • setup recurring tasks via crontab syntax
  • lightweight helpers build on robust tools like Dramatiq and APScheduler
  • Sentry cron monitor support

PyPi Version Test Coverage GitHub License

Setup

You need to have Dramatiq installed and setup properly.

python3 -m pip install dramatiq-crontab
# or
python3 -m pip install dramatiq-crontab[sentry]  # with sentry cron monitor support

Add dramatiq_crontab to your INSTALLED_APPS in settings.py:

# settings.py
INSTALLED_APPS = [
    'dramatiq_crontab',
    # ...
]

Finally, you lauch the scheduler in a separate process:

python3 manage.py crontab

Setup Redis as a lock backend (optional)

If you use Redis as a broker, you can use Redis as a lock backend as well. The lock backend is used to prevent multiple instances of the scheduler from running at the same time. This is important if you have multiple instances of your application running.

# settings.py
DRAMATIQ_CRONTAB = {
    "REDIS_URL": "redis://localhost:6379/0",
}

Usage

# tasks.py
import dramatiq
from dramatiq_crontab import cron


@cron("*/5 * * * *")  # every 5 minutes
@dramatiq.actor
def my_task():
    my_task.logger.info("Hello World")

Sentry Cron Monitors

If you use Sentry you can add cron monitors to your tasks. The monitor's slug will be the actor's name. Like my_task in the example above.

The crontab command

$ python3 manage.py crontab --help
usage: manage.py crontab [-h] [--no-task-loading] [--no-heartbeat] [--version] [-v {0,1,2,3}]
                         [--settings SETTINGS] [--pythonpath PYTHONPATH] [--traceback] [--no-color]
                         [--force-color] [--skip-checks]

Run dramatiq task scheduler for all tasks with the `cron` decorator.

options:
  -h, --help            show this help message and exit
  --no-task-loading     Don't load tasks from installed apps.
  --no-heartbeat        Don't start the heartbeat actor.

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

dramatiq_crontab-1.0.5.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

dramatiq_crontab-1.0.5-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file dramatiq_crontab-1.0.5.tar.gz.

File metadata

  • Download URL: dramatiq_crontab-1.0.5.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for dramatiq_crontab-1.0.5.tar.gz
Algorithm Hash digest
SHA256 ee3d7693ad726b87fd424aa9efe14cf0a6a2059a377aacb73ba7d55510544b0d
MD5 a7225ecd8b3d67993c911942327ae46b
BLAKE2b-256 93015ae73c5630d307b04e2a5a96c2b156660ce9edc8bc49bc11e15d619634f8

See more details on using hashes here.

File details

Details for the file dramatiq_crontab-1.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for dramatiq_crontab-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b2e92e682b92d3257a74f6acd47b71e2133117733f792a71960291ee533a4611
MD5 0ab6065362a554dc261b5fac3719efc9
BLAKE2b-256 e9c70d6ffaf5bae0b04da5273b23b5ed7e2705398935a4373b70990545c08e08

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