Django-redis персистирование json-данных
У меня есть небольшой django сайт, который управляет куполом анстрономии и домашней автоматикой. При запуске проект загружает 3 json файла: реле, условия и домашняя автоматика. Чтобы избежать постоянного чтения и записи на ssd Pi4, я загружаю json-файлы в REDIS (при запуске в приложениях, см. ниже). У меня уже есть REDIS, запущенный в докере, поскольку проект использует celery.
Моя проблема в том, что в течение нескольких минут после загрузки json в REDIS он очищает данные из кэша.
Я загружаю json-файл в виде словаря (dict) в apps
cache.set("REDIS_ashtreeautomation_dict", dict, timeout=None)
и установить
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://redis:6379",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"SERIALIZER": "django_redis.serializers.json.JSONSerializer",
"TIMEOUT": None
}
}
}
Мне не нужно, чтобы данные сохранялись, если докеры упадут, и мне не нужны функции db. Кэширование этих файлов - идеальный вариант, но мне нужно, чтобы они "оставались живыми" в течение всего срока службы сервера.
Спасибо.
Спасибо, Кевин.
Перемещение TIMEOUT решило проблему.
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://redis:6379",
"TIMEOUT": None,
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"SERIALIZER": "django_redis.serializers.json.JSONSerializer",
}
}
}
Я собираюсь включить некоторый код, чтобы поймать долгосрочные политики "выселения" REDIS (т.е. перезагрузить json-данные). Я не хочу углубляться в докер REDIS.
Спасибо
Ян