说在前头
业务场景:一个id,限制每秒只能访问多少次。
为啥:可以防止别人乱刷接口,减少服务器的压力。
案例
1.发短信验证码
通常发短信之前就需要图形验证过后再发,如果有人抓包,用程序连续刷,就很危险了,所以得限流!一秒只能发一次,多余过滤掉。
2.提现金额(未经过审核情况)
我有个同事他们公司就是那样被盗刷红包。人家用程序,一秒内狂请求。或者狂点。数据库还没来得及更新,判断,就没人家撸走红包了。所以就得限流。
代码搞起
使用Python操作redis,进行限流。
测试
for _ in range(3): if act_limit(uid='1',action='/',max_count=1,period=1) is False: print('频率过快') else: print('正常')
输出的结果
正常
频率过快
频率过快
拓展
这样效率远远不够,下一节进行优化。使用lua脚本来限流。
说在最后
假如有帮助到你,或者你也是python爱好者,点赞,关注,转发。我会持续更新我日常在项目用到的工具,分享给大家。