博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进阶开发——文档,缓存,ip限速
阅读量:5780 次
发布时间:2019-06-18

本文共 1948 字,大约阅读时间需要 6 分钟。

一.文档自动化管理

  1.django rest framework提供了一个接口:

      可以将代码中注释转换为文档中内容(list,create等),以及help_text等等,且会生成JavaScript,Python,Shell的测试脚本,也可以直接在该接口测试。

from rest_framework.documentation import include_docs_urls.......urlpatterns = [      # 配置drf文档    url('^docs/', include_docs_urls(title='悦运动')),   ......] 

  2.效果如下:

 

二.django rest frmawork的缓存

  1.Django自带的缓存机制:

  2.drf-extensions:

    2.1安装:

    2.2缓存的使用(适用于retrieve和list):

1 #缓存2 from rest_framework_extensions.cache.mixins import CacheResponseMixin3 ......4 #配置缓存mixin5 class JoinScheduleViewset(CacheResponseMixin,mixins.ListModelMixin, mixins.DestroyModelMixin,6                           mixins.CreateModelMixin,7                           mixins.RetrieveModelMixin, viewsets.GenericViewSet):8 ......

 

    2.3添加缓存过期时间(setting文件):

REST_FRAMEWORK_EXTENSIONS = {
   #15分钟 'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 15}

 

  3.配置redis缓存(会在redis生成相应key及内容等。不同内容格式【json,html等】对应key不同):

    3.1django-redis地址:

    3.2安装:pip install django-redis

    3.3简单配置(setting中):

CACHES = {    "default": {        "BACKEND": "django_redis.cache.RedisCache",       #有密码就配置,否则直接跟redis地址,1是数据库        "LOCATION": "redis://密码@127.0.0.1:6379/1",        "OPTIONS": {            "CLIENT_CLASS": "django_redis.client.DefaultClient",        }    }}

 

三.Throtting对用户和ip进行限速

  1.目的:

    限制爬虫,防止爬虫对服务器造成压力,保护数据等原因。

  2.drf官方文档介绍:

    2.1setting配置:

REST_FRAMEWORK = {    'DEFAULT_THROTTLE_CLASSES': (       #未登录        'rest_framework.throttling.AnonRateThrottle',       #登录后        'rest_framework.throttling.UserRateThrottle'    ),    'DEFAULT_THROTTLE_RATES': {
     #某段时间最多反问多少次 'anon': '100/day', 'user': '1000/day' }}

 

请求超过了次数,状态码为429

      2.2view引入(解析配置,获取ip等等操作):

#引入throttlefrom rest_framework.throttling import UserRateThrottle,AnonRateThrottleclass ScheduleViewset(......):    #配置ip限制访问次数    throttle_classes = (UserRateThrottle,AnonRateThrottle).......

 

转载于:https://www.cnblogs.com/lyq-biu/p/9626005.html

你可能感兴趣的文章
phpstorm安装laravel-ide-helper实现自动完成、代码提示和跟踪
查看>>
python udp编程实例
查看>>
TortoiseSVN中图标的含义
查看>>
Tasks and Back stack 详解
查看>>
关于EXPORT_SYMBOL的作用浅析
查看>>
成功的背后!(给所有IT人)
查看>>
在SpringMVC利用MockMvc进行单元测试
查看>>
Nagios监控生产环境redis群集服务战
查看>>
Angular - -ngKeydown/ngKeypress/ngKeyup 键盘事件和鼠标事件
查看>>
Android BlueDroid(一):BlueDroid概述
查看>>
Java利用httpasyncclient进行异步HTTP请求
查看>>
宿舍局域网的应用
查看>>
html代码究竟什么用途
查看>>
Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)
查看>>
Python version 2.7 required, which was not foun...
查看>>
context:annotation-config vs component-scan
查看>>
exgcd、二元一次不定方程学习笔记
查看>>
经典sql
查看>>
CSS3边框会动的信封
查看>>
JavaWeb实例设计思路(订单管理系统)
查看>>