From 8fe56bb263a170a27341e09ab725676d0f5f34b1 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 19 Jun 2024 16:24:31 -0700 Subject: [PATCH] Add hook to run generic pre-job setup logic. --- django_dbq/management/commands/worker.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/django_dbq/management/commands/worker.py b/django_dbq/management/commands/worker.py index 9215aad..009d660 100644 --- a/django_dbq/management/commands/worker.py +++ b/django_dbq/management/commands/worker.py @@ -1,3 +1,4 @@ +from django.conf import settings from django.db import transaction from django.core.management.base import BaseCommand, CommandError from django.utils import timezone @@ -13,6 +14,9 @@ DEFAULT_QUEUE_NAME = "default" +global_pre_process_job_hook_name = getattr(settings, "DJANGO_DBQ_GLOBAL_PRE_PROCESS_JOB_HOOK") or None +global_pre_process_job_hook_function = global_pre_process_job_hook_name and import_string(global_pre_process_job_hook_name) + class Worker: def __init__(self, name, rate_limit_in_seconds): @@ -61,6 +65,9 @@ def _process_job(self): if not job: return + if global_pre_process_job_hook_function: + global_pre_process_job_hook_function(self, job) + logger.info( 'Processing job: name="%s" queue="%s" id=%s state=%s next_task=%s', job.name,