Проблема Django Redis с Docker: InvalidCacheBackendError: Нет модуля с именем 'django.core.cache.backends.redis'
StackOverflow! Это первый вопрос, который я задаю, но я получил много других ответов отсюда, спасибо большое.
Моя проблема в том, что я хочу использовать Redis через docker для кэша, но получил эту ошибку.
django.core.cache.backends.base.InvalidCacheBackendError: Could not find backend 'django.core.cache.backends.redis.RedisCache': No module named 'django.core.cache.backends.redis'
Мои настройки кэша таковы.
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379',
}
}
Я взял их из документации Django.
Я использовал эту команду для запуска экземпляра Redis в docker.
docker run --name some-redis -d redis
Я видел несколько старых сообщений, которые не помогли мне решить проблему.
Django представил бэкенд Redis в версии 4.0. https://docs.djangoproject.com/en/4.1/topics/cache/#redis
Убедитесь, что версия Django в контейнере docker не ниже 4.0.
Или, если вы не хотите обновлять Django, вы можете использовать такие пакеты, как django-redis
.
Я думаю, что проблема возникает из-за строки 'LOCATION': 'redis://127.0.0.1:6379'
, которая не соответствует имени, которое вы дали контейнеру redis
в вашей сети докеров.
Действительно, команда docker run --name some-redis -d redis
присваивает имя контейнера some-redis
, поэтому вы должны ссылаться на ваш экземпляр Redis с этим именем в вашем Python-коде.
В двух словах, у вас есть 2 варианта:
- Либо переименовать контейнер
redis
с помощью командыdocker run --name redis -d redis
(заменивsome-redis
наredis
), - или наоборот, заменив
'LOCATION': 'redis://127.0.0.1:6379'
на'LOCATION': 'some-redis://127.0.0.1:6379'
в приведенном выше коде.