跳转到主要内容

用于创建和处理触发器的框架。

项目描述

Coverage Status CI Status

关于

Django Triggers 是一个轻量级框架,允许应用的一部分生成触发器,而另一部分则对其做出响应。触发器是持久的,可以安排在稍后处理。

用法

通过子类化 Trigger 模型来定义触发器。 Trigger 定义了所有子触发器常见的数据结构和逻辑。子类只需要覆盖 _process 方法并将 typed 设置为一个唯一的slug。

设置

以下设置被使用

  • DJTRIGGERS_TRIES_BEFORE_WARNING:在记录警告之前,任务可以重试的次数。默认为3。
  • DJTRIGGERS_TRIES_BEFORE_ERROR:在引发错误之前,任务可以重试的次数。默认为5。
  • DJTRIGGERS_ASYNC_HANDLING:是否应该异步处理(使用Celery)或不是。默认为False。
  • DJTRIGGERS_CELERY_TASK_MAX_RETRIES:触发器的Celery任务应该重试的次数。默认为0。
  • DJTRIGGERS_TYPE_TO_TABLE:触发器类型到数据库表的映射。用于清理脚本。默认为{}
  • DJTRIGGERS_REDIS_URL:用于锁的Redis实例的URL。
  • DJTRIGGERS_LOGGERS:django-triggers的单独日志配置。默认为()

示例

通用使用

from djtriggers.models import Trigger

class BreakfastTrigger(Trigger):
    class Meta:
        # There is no trigger specific data so make a proxy model.
        # This ensures no additional db table is created.
        proxy = True
    typed = 'breakfast'

    def _process(self, dictionary={}):
        prepare_toast()
        prepare_juice()
        eat()

触发器特定数据

from djtriggers.models import Trigger

class PayBill(Trigger):
    class Meta:
        # We need a regular model as the trigger specific data needs a
        # place to live in the db.
        proxy = False

    amount = models.IntegerField()
    recipient = models.ForeignKey(User)

    def _process(self, dictionary={}):
        amount = self.amount
        recipient = self.recipient
        check_balance()
        pay_bill(amount, recipient)

触发器处理

from .models import BreakfastTrigger
from .exceptions import ProcessError

trigger = BreakfastTrigger.objects.get(pk=1)
try:
    trigger.process()
except ProcessError as e:
    report_error(e)

延迟处理

from .models import BreakfastTrigger

trigger = BreakfastTrigger()
# Process 8 hours later (this can be any datetime)
trigger.process_after = now() + timedelta(hour=8)

项目详情


下载文件

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

源代码分发

django-triggers-2.1.5.tar.gz (11.7 kB 查看哈希值)

上传于 源代码

构建分发

django_triggers-2.1.5-py2.py3-none-any.whl (21.5 kB 查看哈希值)

上传于 Python 2 Python 3

由支持