Home > Blockchain >  Django Redis problem with Docker: InvalidCacheBackendError: No module named 'django.core.cache.
Django Redis problem with Docker: InvalidCacheBackendError: No module named 'django.core.cache.

Time:12-03

I want to use Redis through docker for the cache but got this error.

django.core.cache.backends.base.InvalidCacheBackendError: Could not find backend 'django.core.cache.backends.redis.RedisCache': No module named 'django.core.cache.backends.redis'

My cache settings are this.

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.redis.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379',
    }
}

I took them from Django documentation.

I used this command to start a Redis instance in docker.

docker run --name some-redis -d redis

CodePudding user response:

I think the issue comes from the line 'LOCATION': 'redis://127.0.0.1:6379' which do not match the name you've given to the redis container in your docker network.

Indeed, the command docker run --name some-redis -d redis assigns some-redis to the container name, so yo have to refer to your Redis instance with this name in your Python code.

In a nutshell, you have to replace 'LOCATION': 'redis://127.0.0.1:6379' by 'LOCATION': 'redis://some-redis:6379' in the above code.

CodePudding user response:

Django introduced the Redis backend in version 4.0. https://docs.djangoproject.com/en/4.1/topics/cache/#redis

Make sure the the Django version in the docker container is at least 4.0.

Or if you don't want to upgrade Django, you can use packages such as django-redis.

  • Related