用Django全栈开发(进阶篇)——07. Django如何实现请求次数限制

大家好,这是皮爷给大家带来的最新的学习Python能干啥?之Django教程的进阶版

在之前《用Django全栈开发》系列专辑里面,皮爷详细的阐述了如何编写一个完整的网站,具体效果可以在代码里面获取。

从进阶篇开始,每一篇文章都是干货满满,干的不行。这一节,我们来说:如果网页被大量快速访问,该如何限制。

获取整套教程源码唯一途径,关注『皮爷撸码』,回复『peekpa.com』

皮爷的每一篇文章,都配置相对应的代码。这篇文章的代码对应的Tag是“Advanced_07”。

在这里插入图片描述

场景分析

每一次用户的访问,对服务器来说,都是一个request。对每一个request,服务器都会耗费CPU来处理请求。如果同一个IP,访问速度过快,比如一秒钟发来十几个请求甚至百个,那么你的服务器即使再有缓存,对待每一个请求,多多少少你也得走几行代码。如果访问的主机短时间之内暴增,而且每台机器都短时间内大量发送请求,那么你的服务器短时间之内就会崩掉。

所以,针对上面的场景,我们需要对我们的网站添加一个限制刷新评率的功能。就像某知名论坛一样,刷新频率不得超过2秒:

在这里插入图片描述

Django-ratelimit

如何实现请求次数的限制?

我们这里准备使用Django-ratelimit来实现。当然,首先还是来安装:

$ pip install django-ratelimit==3.0.0

安装好之后,我们接下来看如何使用。

在Django-ratelimit库中,你可以使用注解的方式来实现刷新限制,或者直接调用方法:

  • 直接方法有:@ratelimit();
  • 直接调用方法有:get_usage()以及is_ratelimited();
  • 最后抛出一个:ratelimit.exceptions.Ratelimited

如何实现控制

注解视图函数

通过注解实现,这个使用起来很简单,只需要直接在你需要限制的视图函数里面添加注解就可以了,比如,我们这里将首页添加限制:

@ratelimit(key='ip', rate='2/10s', block=True
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值