A Django app to register periodic Django Q tasks.
Project description
django-q-registry
A Django app to register periodic Django Q tasks.
Requirements
- Python 3.8, 3.9, 3.10, 3.11, 3.12
- Django 3.2, 4.2, 5.0
- Django Q2 1.4.3+
- This package has only been tested with the Django ORM broker.
Getting Started
- Install the package from PyPI:
python -m pip install django-q-registry
- Add the app to your Django project's
INSTALLED_APPS
:
INSTALLED_APPS = [
...,
"django_q_registry",
...,
]
Usage
Registering Periodic Tasks
There are three supported ways to register periodic tasks:
-
In a
tasks.py
file in a Django app, using the@register_task
decorator:# tasks.py from django.core.mail import send_mail from django_q.models import Schedule from django_q_registry import register_task @register_task( name="Send periodic test email", schedule_type=Schedule.CRON, # https://crontab.guru/#*/5_*_*_*_* cron="*/5 * * * *", ) def send_test_email(): send_mail( subject="Test email", message="This is a test email.", from_email="noreply@example.com", recipient_list=["johndoe@example.com"], )
-
In a
tasks.py
file in a Django app, using theregistry.register
function directly:# tasks.py from django.core.mail import send_mail from django_q.models import Schedule from django_q_registry.registry import registry registry.register( send_mail, name="Send periodic test email", kwargs={ "subject": "Test email", "message": "This is a test email.", "from_email": "noreply@example.com", "recipient_list": ["janedoe@example.com"], }, schedule_type=Schedule.CRON, # https://crontab.guru/#*/5_*_*_*_* cron="*/5 * * * *", )
-
In a Django project's
settings.py
file, using theQ_REGISTRY["TASKS"]
setting:# settings.py from django_q.models import Schedule Q_REGISTRY = { "TASKS": [ { "name": "Send periodic test email", "func": "django.core.mail.send_mail", "kwargs": { "subject": "Test email", "message": "This is a test email.", "from_email": "noreply@example.com", "recipient_list": ["janedoe@example.com"], }, "schedule_type": Schedule.CRON, # https://crontab.guru/#*/5_*_*_*_* "cron": "*/5 * * * *", }, ], }
Setting up Periodic Tasks in Production
At some point in your project's deployment process, run the setup_periodic_tasks
management command:
python manage.py migrate
python manage.py setup_periodic_tasks
This command automatically registers periodic tasks from tasks.py
files in Django apps, and from the Q_REGISTRY["TASKS"]
setting. It also cleans up any periodic tasks that are no longer registered.
Documentation
Please refer to the documentation for more information.
License
django-q-registry
is licensed under the MIT license. See the LICENSE
file for more information.
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
Built Distribution
Hashes for django_q_registry-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2be3b529930cea60de8829c4bc530f85e5402b7b4111ba72398666902a0d39f8 |
|
MD5 | 6765031726c4e45dc91e43ae4e79266b |
|
BLAKE2b-256 | 2553d3cf857edd5e6f1817c7371d43cbdbf3153dae96db5e2ae8555e3f8b424f |