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.4.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

dramatiq_crontab-1.0.4-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dramatiq_crontab-1.0.4.tar.gz
  • Upload date:
  • Size: 6.1 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.4.tar.gz
Algorithm Hash digest
SHA256 79401eab7f3aaf9e726796155238018b70b03e446fc1932e61c7fef7e0051def
MD5 adbf3b76a2020e254f023ddc3251544f
BLAKE2b-256 a00bf9fd91edd5801d5b37ab0babd4fccd3b277a601d1ce7ad30d7400ac0be95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dramatiq_crontab-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 da8bf0ad2cff855fcef77027d20ebba4488222530e228e5de237b91793944ddf
MD5 a0748c924c2529b9b023e49411cf3c30
BLAKE2b-256 194342968f506ba0fd5f1348c2baa77b3000b7ee7d44bf1449719ec3cf947be6

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