Signals¶
Available signals¶
Django Q emits the following signals during its lifecycle.
Before enqueuing a task¶
The django_q.signals.pre_enqueue
signal is emitted before a task is
enqueued. The task dictionary is given as the task
argument.
Before executing a task¶
The django_q.signals.pre_execute
signal is emitted before a task is
executed by a worker. This signal provides two arguments:
task
: the task dictionary.func
: the actual function that will be executed. If the task was created with a function path, this argument will be the callable function nonetheless.
Subscribing to a signal¶
Connecting to a Django Q signal is done in the same manner as any other Django signal:
from django.dispatch import receiver
from django_q.signals import pre_enqueue, pre_execute
@receiver(pre_enqueue)
def my_pre_enqueue_callback(sender, task, **kwargs):
print("Task {} will be enqueued".format(task["name"]))
@receiver(pre_execute)
def my_pre_execute_callback(sender, func, task, **kwargs):
print("Task {} will be executed by calling {}".format(
task["name"], func))