diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py index 68c56dd5a..7960ba5c5 100644 --- a/netbox/core/models/jobs.py +++ b/netbox/core/models/jobs.py @@ -1,6 +1,7 @@ import uuid import django_rq +from rq.exceptions import NoSuchJobError from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey from django.core.exceptions import ValidationError @@ -152,10 +153,14 @@ class Job(models.Model): def delete(self, *args, **kwargs): super().delete(*args, **kwargs) - - rq_queue_name = get_config().QUEUE_MAPPINGS.get(self.object_type.model, RQ_QUEUE_DEFAULT) - queue = django_rq.get_queue(rq_queue_name) - job = queue.fetch_job(str(self.job_id)) + job = None + for check_queue in get_config().QUEUE_MAPPINGS: + queue = django_rq.get_queue(check_queue) + try: + job = queue.fetch_job(str(self.job_id)) + break + except NoSuchJobError: + pass if job: job.cancel() diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index 05087b2d5..9927529e0 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -261,6 +261,7 @@ class ScriptViewSet(ModelViewSet): request=copy_safe_request(request), commit=input_serializer.data['commit'], job_timeout=script.python_class.job_timeout, + rq_queue_name=script.python_class.rq_queue_name, schedule_at=input_serializer.validated_data.get('schedule_at'), interval=input_serializer.validated_data.get('interval') ) diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 82f519c00..b4fda70c2 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -1110,6 +1110,7 @@ class ScriptView(BaseScriptView): data=form.cleaned_data, request=copy_safe_request(request), job_timeout=script.python_class.job_timeout, + rq_queue_name=script.python_class.rq_queue_name, commit=form.cleaned_data.pop('_commit') )