Проблема 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' в приведенном выше коде.
Вернуться на верх