fix redis cache & add cache to custom types search

This commit is contained in:
2023-10-30 11:41:40 +01:00
parent 38a5833e33
commit cf6213cca3
5 changed files with 21 additions and 18 deletions

View File

@@ -7,6 +7,7 @@ REDIS_URL=
REDIS_PORT=
REDIS_DB=
REDIS_PASSWORD=
REDIS_USER=
SQLITE_DB_PATH=
POSTGRES_HOST=

View File

@@ -2,6 +2,7 @@ from django.shortcuts import render
from django.http import JsonResponse
from django.db.models import Q
from django.contrib.auth import models as auth_models
from django.core.cache import cache
from rest_framework import viewsets, permissions, settings
from rest_framework.decorators import api_view
from rest_framework.response import Response
@@ -39,8 +40,10 @@ class AcquisitionViewSet(viewsets.ModelViewSet):
@api_view(['POST'])
def custom_types_search(request):
items = []
cache_key = f"custom_types_search_{request.data}"
items = cache.get(cache_key, [])
if not items:
for q in request.data:
conditions = Q()
for k in q.keys():
@@ -57,6 +60,7 @@ def custom_types_search(request):
conditions = conditions & cond
items.extend(sde_models.SDEType.objects.filter(conditions))
cache.set(cache_key, items, 60 * 60)
paginator = settings.api_settings.DEFAULT_PAGINATION_CLASS()
result_page = paginator.paginate_queryset(items, request)

View File

@@ -30,7 +30,7 @@ services:
- ./api:/app/api
- ./sde:/app/sde
- ./manage.py:/app/manage.py
# - ./static_eve:/app/static_eve
- ./static_eve:/app/static_eve
command: ["uvicorn", "marbas.asgi:application", "--host", "0.0.0.0", "--port", "8000", "--reload"]
depends_on:
redis:

View File

@@ -4,5 +4,4 @@ from rest_framework import pagination
class CustomPagination(pagination.PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 250
max_page_size = 1000

View File

@@ -92,10 +92,9 @@ WSGI_APPLICATION = 'marbas.wsgi.application'
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.redis.RedisCache",
"LOCATION": f"redis://{os.getenv('REDIS_URL')}:{os.getenv('REDIS_PORT', '6379')}/{os.getenv('REDIS_DB', '0')}",
"LOCATION": f"redis://{os.getenv('REDIS_USER', '')}:{os.getenv('REDIS_PASSWORD', '')}@{os.getenv('REDIS_URL')}:{os.getenv('REDIS_PORT', '6379')}",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": os.getenv("REDIS_PASSWORD"),
"db": os.getenv('REDIS_DB', '0'),
},
}
}