Форум сайта python.su
В проекте есть 2 кеша: 1 - дефолтный (легкий), используется через redis; 2 - “тяжёлый”.
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } }, 'heavylift': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 'LOCATION': os.path.join(BASE_DIR, 'django_cache'), } }
@cache_page(60 * 60) def user_data_view(request): cache1 = caches['default'] #Прирывниваем легкий кеш к cache1 cache2 = caches['heavylift'] #Прирывниваем тяжёлый кеш к cache2 cache1.set('my_key', 'Идёт подготовка данных') #Получаем данные из "легкого" кеша, или None (если он пуст) if cache1.get('my_key', None) == None: #Если "легкий" кеш пуст, проверяем heavylift #Получаем данные из "тяжёлого" кеша, или None (если он пуст) if cache2.get('heavylift', None) == None: #Если "тяжёлый" кеш пуст, запускаем асинхронную задачу. Что если он не пуст? #Запуск асинхронной задачи else: #Если "легкий" кеш не пуст - прекращаем работу return
Офлайн