diff --git a/netbox/extras/management/commands/rqworker.py b/netbox/extras/management/commands/rqworker.py new file mode 100644 index 000000000..02e93c4ef --- /dev/null +++ b/netbox/extras/management/commands/rqworker.py @@ -0,0 +1,16 @@ +from django.conf import settings +from django_rq.management.commands.rqworker import Command as _Command + + +class Command(_Command): + """ + Subclass django_rq's built-in rqworker to listen on all configured queues if none are specified (instead + of only the 'default' queue). + """ + def handle(self, *args, **options): + + # If no queues have been specified on the command line, listen on all configured queues. + if len(args) < 1: + args = settings.RQ_QUEUES + + super().handle(*args, **options) diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index fe7932705..2f9643c78 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -266,7 +266,6 @@ INSTALLED_APPS = [ 'corsheaders', 'debug_toolbar', 'django_filters', - 'django_rq', 'django_tables2', 'django_prometheus', 'mptt', @@ -283,6 +282,7 @@ INSTALLED_APPS = [ 'users', 'utilities', 'virtualization', + 'django_rq', # Must come after extras to allow overriding management commands 'drf_yasg', ] @@ -576,15 +576,17 @@ SWAGGER_SETTINGS = { # Django RQ (Webhooks backend) # -RQ_QUEUES = { - 'default': { +if not TASKS_REDIS_USING_SENTINEL: + RQ_PARAMS = { 'HOST': TASKS_REDIS_HOST, 'PORT': TASKS_REDIS_PORT, 'DB': TASKS_REDIS_DATABASE, 'PASSWORD': TASKS_REDIS_PASSWORD, 'DEFAULT_TIMEOUT': TASKS_REDIS_DEFAULT_TIMEOUT, 'SSL': TASKS_REDIS_SSL, - } if not TASKS_REDIS_USING_SENTINEL else { + } +else: + RQ_PARAMS = { 'SENTINELS': TASKS_REDIS_SENTINELS, 'MASTER_NAME': TASKS_REDIS_SENTINEL_SERVICE, 'DB': TASKS_REDIS_DATABASE, @@ -594,8 +596,11 @@ RQ_QUEUES = { 'socket_connect_timeout': TASKS_REDIS_DEFAULT_TIMEOUT }, } -} +RQ_QUEUES = { + 'default': RQ_PARAMS, # Webhooks + 'check_releases': RQ_PARAMS, +} # # Django debug toolbar diff --git a/netbox/utilities/background_tasks.py b/netbox/utilities/background_tasks.py index a2c1310c7..c1604d900 100644 --- a/netbox/utilities/background_tasks.py +++ b/netbox/utilities/background_tasks.py @@ -10,7 +10,7 @@ from packaging import version logger = logging.getLogger('netbox.releases') -@job +@job('check_releases') def get_releases(pre_releases=False): url = settings.UPDATE_REPO_URL headers = {