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.2.tar.gz
(5.9 kB
view hashes)
Built Distribution
Close
Hashes for dramatiq_crontab-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea1c088a6fa062cf975026c3ebebe54dad0e906bb622b14a27b7643c202ebb6d |
|
MD5 | a8e7e5baaf2991bd05f5a45d6cc406ec |
|
BLAKE2b-256 | 5c9fafe61077f373052b9000089bc7c5302fb14a2219d70309787255e761fb5d |