Просмотр исходного кода

Introduce a new 'check_releases' RQ queue

Jeremy Stretch 6 лет назад
Родитель
Сommit
a2eb2e7da6

+ 16 - 0
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)

+ 10 - 5
netbox/netbox/settings.py

@@ -266,7 +266,6 @@ INSTALLED_APPS = [
     'corsheaders',
     'corsheaders',
     'debug_toolbar',
     'debug_toolbar',
     'django_filters',
     'django_filters',
-    'django_rq',
     'django_tables2',
     'django_tables2',
     'django_prometheus',
     'django_prometheus',
     'mptt',
     'mptt',
@@ -283,6 +282,7 @@ INSTALLED_APPS = [
     'users',
     'users',
     'utilities',
     'utilities',
     'virtualization',
     'virtualization',
+    'django_rq',  # Must come after extras to allow overriding management commands
     'drf_yasg',
     'drf_yasg',
 ]
 ]
 
 
@@ -576,15 +576,17 @@ SWAGGER_SETTINGS = {
 # Django RQ (Webhooks backend)
 # Django RQ (Webhooks backend)
 #
 #
 
 
-RQ_QUEUES = {
-    'default': {
+if not TASKS_REDIS_USING_SENTINEL:
+    RQ_PARAMS = {
         'HOST': TASKS_REDIS_HOST,
         'HOST': TASKS_REDIS_HOST,
         'PORT': TASKS_REDIS_PORT,
         'PORT': TASKS_REDIS_PORT,
         'DB': TASKS_REDIS_DATABASE,
         'DB': TASKS_REDIS_DATABASE,
         'PASSWORD': TASKS_REDIS_PASSWORD,
         'PASSWORD': TASKS_REDIS_PASSWORD,
         'DEFAULT_TIMEOUT': TASKS_REDIS_DEFAULT_TIMEOUT,
         'DEFAULT_TIMEOUT': TASKS_REDIS_DEFAULT_TIMEOUT,
         'SSL': TASKS_REDIS_SSL,
         'SSL': TASKS_REDIS_SSL,
-    } if not TASKS_REDIS_USING_SENTINEL else {
+    }
+else:
+    RQ_PARAMS = {
         'SENTINELS': TASKS_REDIS_SENTINELS,
         'SENTINELS': TASKS_REDIS_SENTINELS,
         'MASTER_NAME': TASKS_REDIS_SENTINEL_SERVICE,
         'MASTER_NAME': TASKS_REDIS_SENTINEL_SERVICE,
         'DB': TASKS_REDIS_DATABASE,
         'DB': TASKS_REDIS_DATABASE,
@@ -594,8 +596,11 @@ RQ_QUEUES = {
             'socket_connect_timeout': TASKS_REDIS_DEFAULT_TIMEOUT
             'socket_connect_timeout': TASKS_REDIS_DEFAULT_TIMEOUT
         },
         },
     }
     }
-}
 
 
+RQ_QUEUES = {
+    'default': RQ_PARAMS,  # Webhooks
+    'check_releases': RQ_PARAMS,
+}
 
 
 #
 #
 # Django debug toolbar
 # Django debug toolbar

+ 1 - 1
netbox/utilities/background_tasks.py

@@ -10,7 +10,7 @@ from packaging import version
 logger = logging.getLogger('netbox.releases')
 logger = logging.getLogger('netbox.releases')
 
 
 
 
-@job
+@job('check_releases')
 def get_releases(pre_releases=False):
 def get_releases(pre_releases=False):
     url = settings.UPDATE_REPO_URL
     url = settings.UPDATE_REPO_URL
     headers = {
     headers = {