我的redis服务器正在运行,配置如下:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://TestPass1234@192.168.0.30:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient"
},
"KEY_PREFIX": "example"
}
}
CACHE_TTL = 60 * 1 # 1 hour
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
这是我的 views.py
:
from django.shortcuts import render
from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
from django.views.decorators.vary import vary_on_cookie
from rest_framework.viewsets import ModelViewSet
from .serializers import TestSerializer
from .models import Test
# Create your views here.
class NameofViewSet(ModelViewSet):
serializer_class = TestSerializer
queryset = Test.objects.all()
#lookup_field = 'name_of_lookup_field'
# and more..
@method_decorator(vary_on_cookie)
@method_decorator(cache_page(60*60))
def dispatch(self, *args,**kwargs):
return super(TestSerializer, self).dispatch(*args,**kwargs)
我在数据库中有一个对象,就是通过请求url来获取一些东西。
错误:
[08/Dec/2020 02:17:25] "GET /tests/ HTTP/1.1" 500 158257
Internal Server Error: /tests/
Traceback (most recent call last):
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\redis\connection.py", line 643, in on_connect
auth_response = self.read_response()
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\redis\connection.py", line 756, in read_response
raise response
redis.exceptions.AuthenticationWrongNumberOfArgsError: wrong number of arguments for 'auth' command
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args,**callback_kwargs)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args,**kwargs)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\rest_framework\viewsets.py", line 125, in
view
return self.dispatch(request, *args,**kwargs)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django\utils\decorators.py", line 43, in _wrapper
return bound_method(*args,**kwargs)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django\views\decorators\vary.py", line 38, in inner_func
response = func(*args,**kwargs)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django\utils\decorators.py", line 43, in _wrapper
return bound_method(*args,**kwargs)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django\utils\decorators.py", line 122, in
_wrapped_view
result = middleware.process_request(request)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django\middleware\cache.py", line 145, in
process_request
cache_key = get_cache_key(request, self.key_prefix, 'GET', cache=self.cache)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django\utils\cache.py", line 360, in get_cache_key
headerlist = cache.get(cache_key)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django_redis\cache.py", line 87, in get
value = self._get(key, default, version, client)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django_redis\cache.py", line 27, in _decorator
return method(self, *args,**kwargs)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django_redis\cache.py", line 94, in _get
return self.client.get(key, default=default, version=version, client=client)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\django_redis\client\default.py", line 220, in get
value = client.get(key)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\redis\client.py", line 1606, in get
return self.execute_command('GET', name)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\redis\client.py", line 898, in execute_command
conn = self.connection or pool.get_connection(command_name,**options)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\redis\connection.py", line 1192, in get_connection
connection.connect()
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\redis\connection.py", line 567, in connect self.on_connect()
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\redis\connection.py", line 649, in on_connect
self.send_command('AUTH', self.password, check_health=False)
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\redis\connection.py", line 725, in send_command
self.send_packed_command(self.pack_command(*args),
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\redis\connection.py", line 775, in pack_command
for arg in imap(self.encoder.encode, args):
File "C:\Users\dziugas\.virtualenvs\test_cache-PBGnRHhx\lib\site-packages\redis\connection.py", line 119, in encode
raise DataError("Invalid input of type: '%s'. Convert to a "
redis.exceptions.DataError: Invalid input of type: 'NoneType'. Convert to a bytes, string, int or float first.
[08/Dec/2020 02:19:58] "GET /tests/ HTTP/1.1" 500 158257
这是我第一次尝试使用cache,有什么问题吗?我在youtube上关注了这个教程,但是没有得到预期的结果。如何使用redis?
我的 Pipfile
:
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
django = "*"
django-rest-framework = "*"
django-redis = "==4.12.1"
django-redis-cache = "==3.0.0"
redis = "==3.5.3"
[dev-packages]
[requires]
python_version = "3.9"
1条答案
按热度按时间lrl1mhuk1#
我对django如何向redis提供密码有错误的理解,因此我将设置更改为: