#python #django #caching #celery
#python #django #кэширование #сельдерей
Вопрос:
Я использую Django Celery для асинхронной обработки данных. Вот мой settings.py:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake'
}
}
И вот моя задача Сельдерея:
from celery import shared_task
from django.core.cache import cache
@shared_task
def process():
my_data = cache.get('hello')
if(my_data == None):
my_data = 'something'
cache.set('hello', my_data)
Это очень просто. Однако каждый раз, когда я вызываю задачу, cache.get(‘hello’) всегда возвращает None . Я понятия не имею, почему. Кто-нибудь может мне помочь?
Я также пробовал использовать Memcached и эти настройки:
> CACHES = {
> 'default': {
> 'BACKEND':
> 'django.core.cache.backends.memcached.MemcachedCache',
> 'LOCATION': '127.0.0.1:11211',
> 'TIMEOUT': 60 * 60 * 60 * 24,
> 'OPTIONS': {
> 'MAX_ENTRIES': 5000,
> }
> } }
Конечно, memcached выполняется как демон. Но код все еще не работает…
Комментарии:
1. LocMemCache хранит результаты в памяти, и значения удаляются из него, как только функция завершает выполнение. Однако это не должно быть проблемой с Memcached. Попробуйте настроить без
TIMEOUT
иOPTIONS
.2. Это работает! Спасибо. Теперь вопрос в том, почему ТАЙМ-АУТ и ПАРАМЕТРЫ заставляют memcached больше не работать?