1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Allow redefining internally used queues

This commit is contained in:
kkthxbye-code
2022-12-05 10:04:28 +01:00
committed by Jeremy Stretch
parent 5a77791f9d
commit 080a001118
4 changed files with 23 additions and 2 deletions

View File

@ -141,6 +141,22 @@ When determining the primary IP address for a device, IPv6 is preferred over IPv
--- ---
## QUEUE_MAPPINGS
Allows changing which queues are used internally for background tasks.
```python
QUEUE_MAPPINGS = {
'webhook': 'low',
'report': 'high',
'script': 'high',
}
```
If no queue is defined the queue named `default` will be used.
---
## RELEASE_CHECK_URL ## RELEASE_CHECK_URL
Default: None (disabled) Default: None (disabled)

View File

@ -21,6 +21,7 @@ from extras.choices import *
from extras.constants import * from extras.constants import *
from extras.conditions import ConditionSet from extras.conditions import ConditionSet
from extras.utils import FeatureQuery, image_upload from extras.utils import FeatureQuery, image_upload
from netbox.config import get_config
from netbox.models import ChangeLoggedModel from netbox.models import ChangeLoggedModel
from netbox.models.features import ( from netbox.models.features import (
CloningMixin, CustomFieldsMixin, CustomLinksMixin, ExportTemplatesMixin, JobResultsMixin, TagsMixin, WebhooksMixin, CloningMixin, CustomFieldsMixin, CustomLinksMixin, ExportTemplatesMixin, JobResultsMixin, TagsMixin, WebhooksMixin,
@ -681,7 +682,8 @@ class JobResult(models.Model):
job_id=uuid.uuid4() job_id=uuid.uuid4()
) )
queue = django_rq.get_queue("default") rq_queue_name = get_config().QUEUE_MAPPINGS.get(obj_type.name, 'default')
queue = django_rq.get_queue(rq_queue_name)
if schedule_at: if schedule_at:
job_result.status = JobResultStatusChoices.STATUS_SCHEDULED job_result.status = JobResultStatusChoices.STATUS_SCHEDULED

View File

@ -5,6 +5,7 @@ from django.contrib.contenttypes.models import ContentType
from django.utils import timezone from django.utils import timezone
from django_rq import get_queue from django_rq import get_queue
from netbox.config import get_config
from netbox.registry import registry from netbox.registry import registry
from utilities.api import get_serializer_for_model from utilities.api import get_serializer_for_model
from utilities.utils import serialize_object from utilities.utils import serialize_object
@ -78,7 +79,8 @@ def flush_webhooks(queue):
""" """
Flush a list of object representation to RQ for webhook processing. Flush a list of object representation to RQ for webhook processing.
""" """
rq_queue = get_queue('default') rq_queue_name = get_config().QUEUE_MAPPINGS.get('webhook', 'default')
rq_queue = get_queue(rq_queue_name)
webhooks_cache = { webhooks_cache = {
'type_create': {}, 'type_create': {},
'type_update': {}, 'type_update': {},

View File

@ -101,6 +101,7 @@ MEDIA_ROOT = getattr(configuration, 'MEDIA_ROOT', os.path.join(BASE_DIR, 'media'
METRICS_ENABLED = getattr(configuration, 'METRICS_ENABLED', False) METRICS_ENABLED = getattr(configuration, 'METRICS_ENABLED', False)
PLUGINS = getattr(configuration, 'PLUGINS', []) PLUGINS = getattr(configuration, 'PLUGINS', [])
PLUGINS_CONFIG = getattr(configuration, 'PLUGINS_CONFIG', {}) PLUGINS_CONFIG = getattr(configuration, 'PLUGINS_CONFIG', {})
QUEUE_MAPPINGS = getattr(configuration, 'QUEUE_MAPPINGS', {})
RELEASE_CHECK_URL = getattr(configuration, 'RELEASE_CHECK_URL', None) RELEASE_CHECK_URL = getattr(configuration, 'RELEASE_CHECK_URL', None)
REMOTE_AUTH_AUTO_CREATE_USER = getattr(configuration, 'REMOTE_AUTH_AUTO_CREATE_USER', False) REMOTE_AUTH_AUTO_CREATE_USER = getattr(configuration, 'REMOTE_AUTH_AUTO_CREATE_USER', False)
REMOTE_AUTH_BACKEND = getattr(configuration, 'REMOTE_AUTH_BACKEND', 'netbox.authentication.RemoteUserBackend') REMOTE_AUTH_BACKEND = getattr(configuration, 'REMOTE_AUTH_BACKEND', 'netbox.authentication.RemoteUserBackend')