Files
django-q2/django_q/signals.py
T

31 lines
1018 B
Python

import importlib
from django.db.models.signals import post_save
from django.dispatch import receiver, Signal
from django.utils.translation import gettext_lazy as _
from django_q.conf import logger
from django_q.models import Task
@receiver(post_save, sender=Task)
def call_hook(sender, instance, **kwargs):
if instance.hook:
f = instance.hook
if not callable(f):
try:
module, func = f.rsplit('.', 1)
m = importlib.import_module(module)
f = getattr(m, func)
except (ValueError, ImportError, AttributeError):
logger.error(_('malformed return hook \'{}\' for [{}]').format(instance.hook, instance.name))
return
try:
f(instance)
except Exception as e:
logger.error(_('return hook {} failed on [{}] because {}').format(instance.hook, instance.name, e))
pre_enqueue = Signal(providing_args=["task"])
pre_execute = Signal(providing_args=["func", "task"])