安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

FastAPI接口限流

6月22日 浅时光投稿
  今天分享接口限流。
  如果没有接口限流,可能会导致服务器负载不平衡,暴力破解密码,恶意请求,导致服务器额外费用,拒绝服务攻击等。
  因此做好接口限流很有必要。
  怎么做接口限流呢?常见的接口限流算法有4种:
  1、固定窗口计数器
  比如说每小时限制请求10次,超过10次的直接丢弃。它有个缺点,就是有时会超过10次,最多达到2倍。比如说固定窗口为整点,8点50到9点之间发送了10个请求,9点到9点10分又发送了10请求,虽说都被放行,但8点50到9点50这一个小时内,发送了20个请求。
  2、滑动窗口计数器
  这个解决了1的问题,但是时间区间的精度划分越高,算法所需的空间容量就越大。
  3、漏洞算法
  漏洞算法多使用队列实现,服务的请求会存到队列中,服务的提供方则按照固定的速率从队列中取出请求并执行,过多的请求则放在队列中排队或直接拒绝。漏洞算法的缺陷也很明显,当短时间内有大量的突发请求时,即便此时服务器没有任何负载,每个请求也都得在队列中等待一段时间才能被响应。
  4、令牌桶算法
  令牌以固定速率生成。生成的令牌放入令牌桶中存放,如果令牌桶满了则多余的令牌会直接丢弃,当请求到达时,会尝试从令牌桶中取令牌,取到了令牌的请求可以执行。如果桶空了,那么尝试取令牌的请求就会被直接丢弃。令牌桶算法既能够将所有的请求平均分布到时间区间内,又能接受服务器能够承受范围内的突发请求。
  可能有朋友会问,为啥不根据IP地址进行限流?其实做是可以做的,只是不那么主流。
  既然要根据IP地址进行限流,那就会产生两个问题,一是IP地址的保存就是一个问题,如果接口是集群,你还要将IP地址保存在一个集中的数据库里,最好是redis。二是会误伤正常请求,因为一个大的局域网,其出口IP是一个,那么限制了这个IP的请求,可能导致正常用户被困。
  以上4种方法中,最简单实用的就是滑动窗口计数器。
  DjangoRESTFramework自带限流〔1〕:RESTFRAMEWORK{DEFAULTTHROTTLECLASSES:〔restframework。throttling。AnonRateThrottle,restframework。throttling。UserRateThrottle〕,DEFAULTTHROTTLERATES:{anon:100day,user:1000day}}
  这里分享一下FastAPI限流的3个方法:
  1、slowapi〔2〕
  slowapi是有人根据flasklimiter改写的,计数器默认保存在内存中,具体用法如下:fromfastapiimportFastAPIfromslowapi。errorsimportRateLimitExceededfromslowapiimportLimiter,ratelimitexceededhandlerfromslowapi。utilimportgetremoteaddresslimiterLimiter(keyfuncgetremoteaddress)appFastAPI()app。state。limiterlimiterapp。addexceptionhandler(RateLimitExceeded,ratelimitexceededhandler)app。get(home)limiter。limit(5minute)asyncdefhomepage(request:Request):returnPlainTextResponse(test)app。get(mars)limiter。limit(5minute)asyncdefhomepage(request:Request,response:Response):return{key:value}
  2、fastapilimiter〔3〕
  需要一个redis来保存计数器:importaioredisimportuvicornfromfastapiimportDepends,FastAPIfromfastapilimiterimportFastAPILimiterfromfastapilimiter。dependsimportRateLimiterappFastAPI()app。onevent(startup)asyncdefstartup():redisawaitaioredis。createredispool(redis:localhost)FastAPILimiter。init(redis)app。get(,dependencies〔Depends(RateLimiter(times2,seconds5))〕)asyncdefindex():return{msg:HelloWorld}ifnamemain:uvicorn。run(main:app,debugTrue,reloadTrue)
  3、asgiratelimit〔4〕
  比如超过每秒五次访问限制后,阻止特定用户60秒:app。addmiddleware(RateLimitMiddleware,authenticateAUTHFUNCTION,backendRedisBackend(),config{ruser:〔Rule(second5,blocktime60)〕,},)
  以上推荐slowapi,无它,因为星是目前最多的。参考资料
  〔1〕自带限流:https:www。djangorestframework。orgapiguidethrottling
  〔2〕slowapi:https:github。comlaurentsslowapi
  〔3〕fastapilimiter:https:github。comlong2icefastapilimiter
  〔4〕asgiratelimit:https:github。comabersheeranasgiratelimit
投诉 评论 转载

黄仁勋终究难成乔布斯一个属于黄仁勋的时代还没开始就迎来了落幕。2月8日,英伟达和软银集团双双宣布,英伟达对Arm的收购交易终止。至此,这场为时一年多的芯片行业最大规模收购案以失败告终。……FastAPI接口限流今天分享接口限流。如果没有接口限流,可能会导致服务器负载不平衡,暴力破解密码,恶意请求,导致服务器额外费用,拒绝服务攻击等。因此做好接口限流很有必要。怎么做接……Python进阶精华编写装饰器为被包装的函数添加参数此方法主要目的就是为了给被包装函数添加额外参数:实例如下:fromfunctoolsimportwrapsdefoptiondebug(func):wraps(func)def……5月汽车公司市值榜特斯拉市值约蒸发一个通用汽车宁德时代成新万每经记者:孙桐桐黄辛旭每经编辑:孙磊5月,汽车股板块整体延续了4月的增长势头。据《每日经济新闻》记者不完全统计,5月,74家汽车类上市公司(涵盖16家跨国整车企业、……鸿蒙系统何去何从?由于美国特朗普政府封锁,华为已经失去了麒麟芯片的代工,华为的销量一路下降,虽然我们不愿意看到,但是事实就是如此残酷,没想到华为这样悲壮的告别手机领域,不过华为及时推出鸿蒙系统,……被美国政府逼死的天才黑客的一生从万维网诞生的第一天起,发明者蒂姆伯纳斯李就做出了免费向所有人开放的决定,从此,互联网带上了开放、共享、自由的乌托邦色彩。然而,互联网的自由开放并没有随着蒂姆伯纳斯李的意……消费曝光台丨五千多元手包运输途中损坏,京东正协商赔偿实习生刘晓宇澎湃新闻记者吕新文近日,浙江杭州的施先生向澎湃质量报告投诉平台(https:tousu。thepaper。cn)反映,他今年10月30日使用京东提供的奢侈品售……F1赛车手通过苹果查找我的追踪盗窃AirPods耳机的小偷IT之家5月25日消息,据AppleInsider报道,在周一被抢劫后,一级方程式赛车手SebastianVettel试图取回他的财物,并使用FindMy(查找我的)应用程序追……华为出售荣耀,你怎么看?华为出售荣耀,实属无奈,对华为而言,先解决生存问题再解决尊严问题1、美国持续打压下,华为芯片供应链吃紧,自造芯片需要时间,出售荣耀可以让华为自身的手机芯片供应链有所缓解,……刻不容缓!市值蒸发千亿,留给拼多多的时间不多了拼多多半年股价跌幅50,市值蒸发千亿有这样的一些公司,它们一直亏损,想要用补贴的方式来获得用户规模。但最终他们还是要想办法让市场看到,他们可以通过创造价值来实现盈利。……为什么近几年勒索软件攻击激增?如何防范它目前我们正在与两种流行病毒作斗争冠状病毒和勒索软件攻击。两者都会影响到部分经济,前者肉眼可见,后者则普通人不可遇见。然而,就网络安全而言,现在我们的安全防范意识,让黑客们有了一……心有猛虎,细嗅蔷薇DC评乾龙盛QA390LE每个人的心中都有一只猛虎。我们或许为了家人的幸福整日奔波劳碌,亦或是为了自己的未来终日埋头苦读。如若这头猛虎不够强壮坚韧,也无法支撑着我们走过数年光阴。但至刚则易折。也许在某个……
认识几个坐过牢的人,为什么感觉说话都不正常?新能源最火热的资源锂矿我国反制开始,爱立信被瑞典坑惨了中兴Axon30Ultra发布会开始了快手调整员工福利,减少房补,取消免费三餐HTC发布最新产品ViveFlow宣传图EpicGames将同样索尼766为什么小米对影像调教的最好?OPPO华为?让华为P50网速媲美5G手机的AI异构通信,是什么黑科技?稳定币崩盘,加密货币怎么办?电商早报上千网络主播主动自查补缴税知乎被约谈处罚马云也看走眼了!京东正式得到国家批复,刘强东固执对了仅售1799元,三星E4直屏4500毫安,小米热销款上市一个

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利