Я использую redis для кэширования. Я пытаюсь получить redis кэш-данные из сериализатора.извлечение кеша redis в django rest framework serializer
мой код:
class CocView(APIView):
"""
Celery and Redis Usage
"""
def get(self,request):
data = cache.get('alldata')
print "In the Cache",data
if not data:
print "in the database"
data = Coc.objects.values('cache_id', 'username', 'email')
test_result=mytask.delay(data)
test_result=mytask.delay()
serializer = CocSerializer(data, many=True)
return Response(serializer.data)
Я обновляю уже существующие данные в моей базе данных с помощью PUT.
Я передаю данные кэша redis в сериализатор, который не обновляется, но все же он показывает обновленные данные из базы данных.
Это означает, что мой сериализатор автоматически извлекает данные из базы данных. Я не знаю, как это происходит.
В моих settings.py у меня есть следующее промежуточное программное обеспечение для redis.
'django.middleware.cache.UpdateCacheMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
В моей task.py у меня есть следующая задача.
from __future__ import absolute_import
from app.models import Coc
from app.celery import app
from django.core.cache import cache
from app.serializers import *
from app.views import *
@app.task
def mytask(data):
try:
dataa = data
cache.set('alldata', dataa,60*45)
return
except ValueError:
return "error"
Если у кого есть предложения по поводу его внедрения, пожалуйста, сообщите нам.
Фактически, мы устанавливаем наш кеш в файл задачи сельдерея. –
Прежде всего, мне нужно понять, в чем причина 'dataa = data': P, в любом случае шутит в стороне, причина, по которой я могу думать о том, что ваш кеш не установлен, потому что ваша задача сельдерея не выполнялась и, следовательно, не могла установить кеш для вас или другая причина, о которой я могу думать, заключается в том, что ваша задача сельдерея могла успешно выполняться, но вы обращались к кешу до того, как задача фактически выполнялась, и, следовательно, вы не получаете никаких данных. Для этого попробуйте установить кеш не как задачу celery, а установить его в каком-то скрипте, а затем попытаться получить доступ. –