Cron style scheduler for asynchronous Dramatiq tasks in Django.
Project description
Dramatiq Crontab
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
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.
# 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
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
dramatiq-crontab-1.0.0.tar.gz
(5.9 kB
view hashes)
Built Distribution
Close
Hashes for dramatiq_crontab-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 570806317743581f8331e283a364106b919070f0397a6face4be0f95efe2449e |
|
MD5 | 29d08e69d324b82d595d0b8367164e3b |
|
BLAKE2b-256 | efd6a88e73e01fca93b92ff3880a6abde8ea197c754804e0fb6003f69cba16c8 |