进阶开发——文档,缓存,ip限速
一.文档自动化管理
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自带的缓存机制:http://djangobook.py3k.cn/2.0/chapter15/
2.drf-extensions:https://github.com/chibisov/drf-extensions
2.1安装:

2.2缓存的使用(适用于retrieve和list):
#缓存
from rest_framework_extensions.cache.mixins import CacheResponseMixin
......
#配置缓存mixin
class JoinScheduleViewset(CacheResponseMixin,mixins.ListModelMixin, mixins.DestroyModelMixin,
mixins.CreateModelMixin,
mixins.RetrieveModelMixin, viewsets.GenericViewSet):
......
2.3添加缓存过期时间(setting文件):
REST_FRAMEWORK_EXTENSIONS = {
#15分钟
'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 15
}
3.配置redis缓存(会在redis生成相应key及内容等。不同内容格式【json,html等】对应key不同):
3.1django-redis地址:https://github.com/niwinz/django-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官方文档介绍:https://www.django-rest-framework.org/api-guide/throttling/
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等等操作):
#引入throttle
from rest_framework.throttling import UserRateThrottle,AnonRateThrottle class ScheduleViewset(......):
#配置ip限制访问次数
throttle_classes = (UserRateThrottle,AnonRateThrottle)
.......
进阶开发——文档,缓存,ip限速的更多相关文章
- web开发--文档下载
GOOGLE在线文档下载地址分享(GOOGLE的文档地址暂不能用了,会放在其它位置..) GOOGLE的在线文档功能好象挂掉了...等找个其它存放的位置把这些文档再上传上去... 存在GOOGLE里面 ...
- [extjs] extjs 5.1 API 开发 文档
官方博客发布了这个新版本说明,英文文章请戳下面 http://www.sencha.com/blog/announcing-sencha-ext-js-5.1/ 翻译版本请戳下面: http://ex ...
- webapi文档描述-swagger
最近做的项目使用mvc+webapi,采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员,最初打算使用word文档方式进行交流 ...
- 在线文档预览方案-office web apps
最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...
- [转载]在线文档预览方案-Office Web Apps
最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...
- webapi文档
webapi文档描述-swagger 最近做的项目使用mvc+webapi,采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员 ...
- dom4j操作xml文档
java Dom4j解析XML文件 标签(空格分隔):java进阶 xml文档: <?xml version="1.0" encoding="UTF-8" ...
- ASP.NET WebAPI使用Swagger生成测试文档
ASP.NET WebAPI使用Swagger生成测试文档 SwaggerUI是一个简单的Restful API测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON配置显示API .项目 ...
- ASP.NET WebAPI 测试文档 (Swagger)
ASP.NET WebAPI使用Swagger生成测试文档 SwaggerUI是一个简单的Restful API测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON配置显示API .项目 ...
随机推荐
- dep包安装与依赖库
安装 点击下载 .deb 包:使用sudo dpkg -i xxx.deb 命令安装 依赖库问题 用sudo apt-get install -f解决依赖问题,解决后重新运行dpkg -i安装命令 验 ...
- [matlab] 19.matlab 基础几何学
polyshape 函数可创建由二维顶点定义的多边形,并返回具有描述其顶点.实心区域和孔的各种属性的 polyshape 对象.例如,pgon = polyshape([0 0 1 1],[1 0 ...
- SQL Access Advisor in Oracle Database 10g
The SQL Access Advisor makes suggestions about indexes and materialized views which might improve sy ...
- ROS 小乌龟测试
教程 1.维基 http://wiki.ros.org/cn/ROS/Tutorials 2. 创客智造 http://www.ncnynl.com/category/ros-junior-tutor ...
- jenkins经验
https://blog.csdn.net/aixiaoyang168/article/details/80636544#31_61(转)
- 异常:NoNodeAvailableException
现象 1.启动时候出现 node null not part of the cluster Cluster [********], ignoring... 2.启动时正常,但是请求时出现 NoNode ...
- ubuntu部分端口命令的使用----开启端口/开启防火墙
环境系统: ubuntu 工具:xshell + virtualbox 1.测试远程主机的端口是否开启(windows命令行下执行) telnet 192.168.1.103 80 远程访问主机的80 ...
- [Micropython]TPYBoard v202 利用单片机快速实现家庭智能控制平台
一提到智能家庭,大家可能首先想到的是各种大佬级公司搞的牛逼产品,或者说是创新产品.想想就觉得很复杂,有的用工控机,有的用树莓派,还有的用arduino,不管用什么,都绕不过服务器进行控制,比如yeel ...
- nova系列二:kvm介绍
一 什么是kvm KVM 全称 Kernel-Based Virtual Machine.也就是说 KVM 是基于 Linux 内核实现的,这就使得linux内核本身就相当于一个Hypervisor. ...
- 【转】AlphaGO Zero 原理
原文地址:https://www.hhyz.me/2018/08/08/2018-08-08-AlphaGO-Zero/> 1. 概述 简单来说,AlphaGo Zero 的训练可以分为三个 ...