Redis некорректно импортируется в Django (при этом конфигурация Redis-cache работает идеально)
Проблема в том, что я не могу правильно настроить параметры Redis-cache
это ошибка, которую я получаю,
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "C:\Users\Ranajoy\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1009, in _bootstrap_inner
self.run()
`Файл
"C:\Users\Ranajoy\AppData\Local\Programs\Python\Python310\lib\threading.py", строка 946, in run self._target(*self._args, **self._kwargs)_** File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django\utils\autoreload.py", строка 64, in wrapper fn(*args, **kwargs) File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django\core\management\commands\runserver.py", line 134, in inner_run self.check(display_num_errors=True) File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django\core\management\base.py", line 487, in check all_issues = checks.run_checks( File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django\core\checks\registry.py", line 88, in run_checks new_errors = check(app_configs=app_configs, databases=databases) File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django\core\checks\caches.py", строка 65, in check_file_based_cache_is_absolute cache = caches[alias] File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django\utils\connection.py", line 62, in __getitem__ conn = self.create_connection(alias) File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django\core\cache__init_.py", line 52, in create_connection return backend_cls(location, params) File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django_redis\cache.py", line 53, in __init__ self._client_cls = import_string(self._client_cls)_ File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django\utils\module_loading.py", строка 30, in import_string return cached_import(module_path, class_name) File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django\utils\module_loading.py", строка 15, in cached_import import_module(module_path) File
"C:\Users\Ranajoy\AppData\Local\Programs\Python\Python310\lib\importlib__init_.py", строка 126, in import_module return _bootstrap. _gcd_import(name[level: ], package, level) File "", line 1050, in _gcd_import File "", line 1027, in _find_and_load File "", line 1006, in _find_and_load_unlocked File "", line 688, in _load_unlocked File "", line 883, in exec_module File "< заморожен importlib. _bootstrap>", строка 241, in call_with_frames_removed_ File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django_redis\client__init_.py", line 1, in ** from .default import DefaultClient File
"C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\venv\lib\site-packages\django_redis\client\default. py", строка 12, in from redis import Redis ImportError: cannot import name 'Redis' from 'redis' (C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)\redis__init_.py)`
my Django
Views.py
from django.shortcuts import render
from .models import *
from django.conf import settings
from django.core.cache.backends.base import DEFAULT_TIMEOUT
from django.views.decorators.cache import cache_page
from django.core.cache import cache
Create your views here.
CACHE_TTL = getattr(settings, 'CACHE_TTL', DEFAULT_TIMEOUT)
def get_recipe(filter_recipe=None):
if filter_recipe:
recipes = Recipe.objects.filter(name__contains=filter_recipe)
print('data coming from DB')
else:
recipes = Recipe.objects.all()
print('data coming from DB')
return recipes
#@cache_page(CACHE_TTL)
def home(request):
filter_recipe = request.GET.get('recipe')
if cache.get(filter_recipe):
recipe = cache.get(filter_recipe)
print('data coming from Cache')
else:
if filter_recipe:
recipe = get_recipe(filter_recipe)
cache.set(filter_recipe, recipe)
else:
recipe = get_recipe()
context = {'recipe': recipe}
return render(request, 'home.html', context)
def show(request, pk):
if cache.get(id):
recipe = cache.get(id)
print('data coming from Cache')
else:
recipe = Recipe.objects.get(id=pk)
cache.set(id, recipe)
print('data coming from DB')
context = {'recipe': recipe}
return render(request, 'show.html', context)
Settings.py
#Cache settings -
CACHE_TTL = 60 * 1500
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient"
},
"KEY_PREFIX": "example"
}
}
all packages used
PS C:\Users\Ranajoy\PycharmProjects\Recipe_App(Redis)> pip freeze
asgiref==3.5.0
Deprecated==1.2.13
Django==4.0.3
django-debug-toolbar==3.2.4
django-redis==5.2.0
django-redis-cache==3.0.1
packaging==21.3
Pillow==9.0.1
pyparsing==3.0.7
redis==3.5.3
redis-simple-cache==0.0.8
sqlparse==0.4.2
tzdata==2022.1
wrapt==1.14.0
trying to integrate Redis to my simple Django application