我注意到在多线程中,我们需要使用更好的缓存,比如“redis”,而不是django的默认“locmemcache”,特别是在生产环境中。
我有多个设置文件,包括 base.py
以及 master.py
我已将我的redis缓存添加到 base.py
如以下代码段所示:
CACHES = {
"alternate": {
"BACKEND": "redis_cache.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379",
"OPTIONS": {
"DB": 1,
"CLIENT_CLASS": "redis_cache.client.DefaultClient",
}
}
}
我故意将其替换,因为我不想在整个应用程序中更改缓存。
不是在我的自定义油门中,我有以下实现:
from rest_framework.throttling import UserRateThrottle
from myproject.settings.base import CACHES
class CustomThrottle(UserRateThrottle):
scope = 'custom_throttle'
cache = CACHES['alternate']
节流率存在于同一位置 base.py
文件
但是,当我运行对该端点的请求时,我遇到了以下错误。
line 26, in throttle_success
self.cache.set(self.key, self.history, self.duration)
AttributeError: 'dict' object has no attribute 'set'
我知道在这种情况下,我必须克服你的成功,但我不确定到底要改变什么。救命?!谢谢。
1条答案
按热度按时间w8biq8rn1#
你的配置有问题,你的设置也应该有默认缓存。
一旦定义了这样的设置,就应该使用缓存对象而不是缓存设置来更新customthrottle。