11 Django RESTful framework 實現緩存

01-安裝

pip install drf-extensions

02-導入

from rest_framework_extensions.cache.mixins import CacheResponseMixin

03-在GoodsListViewSet中添加緩存功能

# CacheResponseMixin必定要放在第一個位置

class GoodsListViewSet(CacheResponseMixin,mixins.ListModelMixin, mixins.RetrieveModelMixin,viewsets.GenericViewSet):

04-設置過時時間,settings裏面

# 緩存配置
REST_FRAMEWORK_EXTENSIONS = {
    'DEFAULT_CACHE_RESPONSE_TIMEOUT': 5   # 5s過時,時間本身能夠隨便設定
}

注:這個緩存使用的是內存,每次重啓以後就會失效redis

05-配置redis緩存

pip install django-redis
# settings.py

# redis緩存
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

06-drf的throttle設置api的訪問速率

爲了防止爬蟲對服務器形成的重大壓力,對數據進行訪問速率限制就顯得很是的重要了

官網使用說明:http://www.django-rest-framework.org/api-guide/throttling/
# settings.py

REST_FRAMEWORK = {
    #限速設置
    'DEFAULT_THROTTLE_CLASSES': (
            'rest_framework.throttling.AnonRateThrottle',   # 未登錄用戶
            'rest_framework.throttling.UserRateThrottle'    # 登錄用戶
        ),
    'DEFAULT_THROTTLE_RATES': {
        'anon': '3/minute',         # 每分鐘能夠請求兩次
        'user': '5/minute'          # 每分鐘能夠請求五次
    }
}

07-views.py

from rest_framework.throttling import UserRateThrottle,AnonRateThrottle

class GoodsListViewSet(CacheResponseMixin,mixins.ListModelMixin, mixins.RetrieveModelMixin,viewsets.GenericViewSet):
  .
  .
  throttle_classes = (UserRateThrottle, AnonRateThrottle)
相關文章
相關標籤/搜索