跳转到主要内容

一个用于注册周期性Django Q任务的Django应用程序。

项目描述

django-q-registry

PyPI PyPI - Python Version Django Version

一个用于注册周期性Django Q任务的Django应用程序。

要求

  • Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13
  • Django 4.2, 5.0
  • Django Q2 1.4.3+
    • 此软件包仅与Django ORM代理进行了测试。

安装

  1. 从PyPI安装软件包
python -m pip install django-q-registry
  1. 将应用程序添加到Django项目的INSTALLED_APPS
INSTALLED_APPS = [
    ...,
    "django_q_registry",
    ...,
]

入门

注册周期性任务

有三种支持注册周期性任务的方法

  1. 在Django应用程序的tasks.py文件中,使用@register_task装饰器

    # 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. 在Django应用程序的tasks.py文件中,直接使用registry.register函数

    # 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. 在Django项目的settings.py文件中,使用Q_REGISTRY["TASKS"]设置

    # 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 * * * *",
            },
        ],
    }
    

在生产环境中设置周期性任务

在项目部署过程中某个时候,运行setup_periodic_tasks管理命令

python manage.py migrate
python manage.py setup_periodic_tasks

此命令会自动注册来自 tasks.py 文件的周期性任务,来自 Django 应用的 Q_REGISTRY["TASKS"] 设置。它还会清理任何不再注册的周期性任务。

文档

有关更多信息,请参阅文档

许可证

django-q-registry 遵循 MIT 许可协议。有关更多信息,请参阅LICENSE 文件。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

django_q_registry-0.4.0.tar.gz (21.4 kB 查看哈希)

上传时间

构建分布

django_q_registry-0.4.0-py3-none-any.whl (12.5 kB 查看哈希)

上传时间 Python 3

由以下支持