From 23d1213c9c415cab1329b69e7e6c93d43e140223 Mon Sep 17 00:00:00 2001 From: dianbofa Date: Wed, 7 May 2025 19:23:13 +0800 Subject: [PATCH 1/2] feat(core): Add queue_name parameter to Job.enqueue() method - Added the queue_name parameter to Job.enqueue(), allowing users to specify an existing queue name. - If queue_name is not provided, the default model queue will be used. - This enhancement improves job scheduling flexibility by enabling targeted execution in specific queues. --- netbox/core/models/jobs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py index 5caa9cc2d3b..00626b839ae 100644 --- a/netbox/core/models/jobs.py +++ b/netbox/core/models/jobs.py @@ -212,6 +212,7 @@ def enqueue( schedule_at=None, interval=None, immediate=False, + queue_name=None, **kwargs ): """ @@ -235,7 +236,7 @@ def enqueue( object_id = instance.pk else: object_type = object_id = None - rq_queue_name = get_queue_for_model(object_type.model if object_type else None) + rq_queue_name = queue_name if queue_name else get_queue_for_model(object_type.model if object_type else None) queue = django_rq.get_queue(rq_queue_name) status = JobStatusChoices.STATUS_SCHEDULED if schedule_at else JobStatusChoices.STATUS_PENDING job = Job( From 4d6648854de5cf61ac1939620c6cd37eb844e447 Mon Sep 17 00:00:00 2001 From: dianbofa Date: Thu, 8 May 2025 13:25:51 +0800 Subject: [PATCH 2/2] feat(core): Add queue_name parameter to enqueue() function Added the queue_name parameter to the enqueue() function to specify the target queue name for task scheduling. If this parameter is not provided, the system will default to using the predefined model queue. This enhancement provides greater scheduling flexibility, allowing tasks to be assigned to different queues as needed. --- netbox/core/models/jobs.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py index 00626b839ae..39e2e522ad2 100644 --- a/netbox/core/models/jobs.py +++ b/netbox/core/models/jobs.py @@ -227,6 +227,8 @@ def enqueue( interval: Recurrence interval (in minutes) immediate: Run the job immediately without scheduling it in the background. Should be used for interactive management commands only. + queue_name: Specifies a target queue name for task scheduling. If omitted, + the system defaults to the predefined model queue.(optional) """ if schedule_at and immediate: raise ValueError(_("enqueue() cannot be called with values for both schedule_at and immediate."))