File redis-unix-socket.patch of Package netbox
--- a/netbox/netbox/settings.py 2024-05-04 21:35:18.459236034 +0200
+++ b/netbox/netbox/settings.py 2024-05-04 21:35:05.462490445 +0200
@@ -277,6 +277,7 @@
TASKS_REDIS_SSL = TASKS_REDIS.get('SSL', False)
TASKS_REDIS_SKIP_TLS_VERIFY = TASKS_REDIS.get('INSECURE_SKIP_TLS_VERIFY', False)
TASKS_REDIS_CA_CERT_PATH = TASKS_REDIS.get('CA_CERT_PATH', False)
+TASKS_REDIS_USE_UNIX_SOCKET = TASKS_REDIS.get('USE_UNIX_SOCKET', False)
# Caching
if 'caching' not in REDIS:
@@ -292,13 +293,21 @@
CACHING_REDIS_SENTINELS = REDIS['caching'].get('SENTINELS', [])
CACHING_REDIS_SENTINEL_SERVICE = REDIS['caching'].get('SENTINEL_SERVICE', 'default')
CACHING_REDIS_PROTO = 'rediss' if REDIS['caching'].get('SSL', False) else 'redis'
+CACHING_REDIS_PROTO = 'unix' if REDIS['caching'].get('USE_UNIX_SOCKET', False) else CACHING_REDIS_PROTO
CACHING_REDIS_SKIP_TLS_VERIFY = REDIS['caching'].get('INSECURE_SKIP_TLS_VERIFY', False)
CACHING_REDIS_CA_CERT_PATH = REDIS['caching'].get('CA_CERT_PATH', False)
+if CACHING_REDIS_PROTO == 'unix':
+ CACHING_REDIS_PORT=''
+ CACHING_REDIS_DATABASE=f'?db={CACHING_REDIS_DATABASE}'
+else:
+ CACHING_REDIS_PORT=f':{CACHING_REDIS_PORT}'
+ CACHING_REDIS_DATABASE=f'/{CACHING_REDIS_DATABASE}'
+
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
- 'LOCATION': f'{CACHING_REDIS_PROTO}://{CACHING_REDIS_USERNAME_HOST}:{CACHING_REDIS_PORT}/{CACHING_REDIS_DATABASE}',
+ 'LOCATION': f'{CACHING_REDIS_PROTO}://{CACHING_REDIS_USERNAME_HOST}{CACHING_REDIS_PORT}{CACHING_REDIS_DATABASE}',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
'PASSWORD': CACHING_REDIS_PASSWORD,
@@ -688,12 +697,18 @@
},
}
else:
- RQ_PARAMS = {
- 'HOST': TASKS_REDIS_HOST,
- 'PORT': TASKS_REDIS_PORT,
- 'SSL': TASKS_REDIS_SSL,
- 'SSL_CERT_REQS': None if TASKS_REDIS_SKIP_TLS_VERIFY else 'required',
- }
+ if TASKS_REDIS_USE_UNIX_SOCKET:
+ RQ_PARAMS = {
+ 'UNIX_SOCKET_PATH': TASKS_REDIS_HOST,
+ }
+ else:
+ RQ_PARAMS = {
+ 'HOST': TASKS_REDIS_HOST,
+ 'PORT': TASKS_REDIS_PORT,
+ 'SSL': TASKS_REDIS_SSL,
+ 'SSL_CERT_REQS': None if TASKS_REDIS_SKIP_TLS_VERIFY else 'required',
+ }
+
RQ_PARAMS.update({
'DB': TASKS_REDIS_DATABASE,
'USERNAME': TASKS_REDIS_USERNAME,