Skip to main content

A Django app to register periodic Django Q tasks.

Project description

django-q-registry

PyPI PyPI - Python Version Django Version

A Django app to register periodic Django Q tasks.

Requirements

  • Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13
  • Django 4.2, 5.0
  • Django Q2 1.4.3+
    • This package has only been tested with the Django ORM broker.

Installation

  1. Install the package from PyPI:
python -m pip install django-q-registry
  1. Add the app to your Django project's INSTALLED_APPS:
INSTALLED_APPS = [
    ...,
    "django_q_registry",
    ...,
]

Getting Started

Registering Periodic Tasks

There are three supported ways to register periodic tasks:

  1. 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"],
        )
    
  2. In a tasks.py file in a Django app, using the registry.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 * * * *",
    )
    
  3. In a Django project's settings.py file, using the Q_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_q_registry-0.4.0.tar.gz (21.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_q_registry-0.4.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file django_q_registry-0.4.0.tar.gz.

File metadata

  • Download URL: django_q_registry-0.4.0.tar.gz
  • Upload date:
  • Size: 21.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for django_q_registry-0.4.0.tar.gz
Algorithm Hash digest
SHA256 feffcc944d4a0305e4a15b74303dd931d61e5a6ecb8d0ff13a8dee802808334b
MD5 fe5d80208e8aeff0b90bfc4e15a830e9
BLAKE2b-256 d2771b9f6041ad491ae88091be17a82af6eef451560b4542d7cdb10dcd8a13c3

See more details on using hashes here.

File details

Details for the file django_q_registry-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_q_registry-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e6fd84d9e358cd795d6790f8f57f04071b8317bb7b6876538b14372eb63452a8
MD5 5d5b78663a7258d863fd4a62329d447d
BLAKE2b-256 f09cb73adc8e017d0743284a837f0f9a1df818459737319fc2137e30a2ec391b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page