前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >org.springframework.web.client.HttpClientErrorException: 429 Too Many Requests

org.springframework.web.client.HttpClientErrorException: 429 Too Many Requests

作者头像
翎野君
发布于 2023-05-12 12:30:55
发布于 2023-05-12 12:30:55
55000
代码可运行
举报
文章被收录于专栏:翎野君翎野君
运行总次数:0
代码可运行

 http 429错误码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4.  429 Too Many Requests

   The 429 status code indicates that the user has sent too many
   requests in a given amount of time ("rate limiting").

   The response representations SHOULD include details explaining the
   condition, and MAY include a Retry-After header indicating how long
   to wait before making a new request.

   For example:

   HTTP/1.1 429 Too Many Requests
   Content-Type: text/html
   Retry-After: 3600

   <html>
      <head>
         <title>Too Many Requests</title>
      </head>
      <body>
         <h1>Too Many Requests</h1>
         <p>I only allow 50 requests per hour to this Web site per
            logged in user.  Try again soon.</p>
      </body>
   </html>

   Note that this specification does not define how the origin server
   identifies the user, nor how it counts requests.  For example, an
   origin server that is limiting request rates can do so based upon
   counts of requests on a per-resource basis, across the entire server,
   or even among a set of servers.  Likewise, it might identify the user
   by its authentication credentials, or a stateful cookie.

   Responses with the 429 status code MUST NOT be stored by a cache.

HttpClientErrorException for status HTTP 429 Too Many Requests

用户在在指定的时间里发送了太多的请求。用于限制速率。属于客户端异常,既客户端没有遵守服务端给定的一定频率内的限制访问次数。

一般而言,当服务端检测到客户端在短时间内频繁的尝试访问特定页面时,它会触发速率限制功能。最常见的例子是用户(或攻击者)反复多次地尝试调用登录接口。

所以当出现429错误的时候,就意味着有一个用户或一段代码被太多次的请求,继而触发了服务端的限速功能。

解决方式

收到429状态码并不是一个常规意义上的错误,因为你的请求率太高了,服务器已经被搞的受不了了。所以我们可以把他理解为服务端“友好”要求客户端降低请求频率。

1)让进程休眠。服务器通常在响应中包含一个Retry-after头,其中包含在重试之前应该等待的秒数。请记住,休眠进程可能会导致问题,例如在任务队列中,你应该在稍后重试该任务,以释放该工作进程用于其他事情。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if response.status_code == 429:
time.sleep(int(response.headers["Retry-After"]))

2)指数退避算法。如果服务器没有告诉您需要等待多长时间,那么您可以通过增加暂停时间来重试请求。还可以避免因为任务重试中的集中请求而被再次限流。因为重试时又会有大量的请求在同一时刻涌入,会不断地造成限流。

3)令牌桶。如果您提前知道在给定的时间内能够发出多少请求,那么这种技术就很有用。每次访问API时,首先从桶中获取一个令牌。桶以恒定的速度重新装满。如果桶是空的,我们就知道再次访问API之前必须等待。

如果服务端的限速配置的不正确那就是另外一回事了。由于大多数速率限制是通过IP来标识访问者,这可能会在动态共享IP的场景中出现问题。如果一个人都没有发几个请求,但是一直收到429状态码的话,可以联系服务端的配置人员。 

参考文章 

https://www.rfc-editor.org/rfc/rfc6585#page-3

https://www.docs4dev.com/apidocs/zh/spring/5.2.12.RELEASE/org/springframework/web/client/HttpClientErrorException.TooManyRequests.html

首发链接:https://cloud.tencent.com/developer/article/2285740

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
restful api设计最佳实践
考虑api的安全性,建议使用https访问。 证书可使用let’s encrypt的免费证书。
ianzhi
2019/07/31
7240
restful api设计最佳实践
ASP.NET Core 中的速率限制中间件的使用
在ASP.NET Core中,速率限制中间件是用来控制客户端对Web API或MVC应用程序发出请求的速率,以防止服务器过载和提高安全性。
Net分享
2024/12/27
820
ASP.NET Core 中的速率限制中间件的使用
第 14 篇:限制接口的访问频率
限流,顾名思义,就是限制对 API 的调用频率。每一次 API 调用,都要花费服务器的资源,因此很多 API 不会对用户无限次地开放,请求达到某个次数后就不再允许访问了,或者一段时间内,最多只允许访问 API 指定次数。
HelloGitHub
2021/05/14
3.7K0
第 14 篇:限制接口的访问频率
从构建分布式秒杀系统聊聊限流的多种实现
前言 俗话说的好,冰冻三尺非一日之寒,滴水穿石非一日之功,罗马也不是一天就建成的。两周前秒杀案例初步成型,分享到了中国最大的同性交友网站-码云。同时也收到了不少小伙伴的建议和投诉。我从不认为分布式、集群、秒杀这些就应该是大厂的专利,在互联网的今天无论什么时候都要时刻武装自己,只有这样,也许你的春天就在明天。 在开发秒杀系统案例的过程中,前面主要分享了队列、缓存、锁和分布式锁以及静态化等等。缓存的目的是为了提升系统访问速度和增强系统的处理能力;分布式锁解决了集群下数据的安全一致性问题;静态化无疑是减轻了缓存以
小柒2012
2018/06/12
1.6K0
理解 ASP.NET Core -限流(Rate Limiting)
而对于众多非微服务化的系统来说,可能并不会部署网关(无论是因为成本还是复杂度),在这种场景下,为了实现限流,微软在 .NET 7 中提供了官方的限流中间件。
郑子铭
2023/08/30
8370
理解 ASP.NET Core -限流(Rate Limiting)
看完这篇,轻松get限流!
限流,也叫速率限制(Rate Limiting),是一种限制请求速率的技术。通常用于保护服务自身,或在下游服务已知无法保护自身的情况下,保护下游服务
一只小黄鱼
2022/08/02
1.4K0
看完这篇,轻松get限流!
Spring Cloud Gateway实战案例(限流、熔断回退、跨域、统一异常处理和重试机制)
Spring Cloud Gateway 作为新一代网关,在性能上有很大提升,并且附加了诸如限流等实用的功能。
chenchenchen
2022/03/09
4.6K0
Spring Cloud Gateway实战案例(限流、熔断回退、跨域、统一异常处理和重试机制)
从SpringBoot构建十万博文聊聊限流特技
在开发十万博客系统的的过程中,前面主要分享了爬虫、缓存穿透以及文章阅读量计数等等。爬虫的目的就是解决十万+问题;缓存穿透是为了保护后端数据库查询服务;计数服务解决了接近真实阅读数以及数据库服务的压力。
小柒2012
2019/12/05
5370
设计一个限速器
限速器 (Rate Limiter) 相信大家都不会陌生,在网络系统中,限速器可以控制客户端发送流量的速度,比如 TCP, QUIC 等协议。而在 HTTP 的世界中, 限速器可以限制客户端在一段时间内发送请求的次数,如果超过设定的阈值,多余的请求就会被丢弃。
全球技术精选
2022/05/19
4760
设计一个限速器
ASP.NET Core 中的速率限制中间件的使用
在ASP.NET Core中,速率限制中间件是用来控制客户端对Web API或MVC应用程序发出请求的速率,以防止服务器过载和提高安全性。
郑子铭
2025/02/19
1020
ASP.NET Core 中的速率限制中间件的使用
【Java】已解决:org.springframework.web.client.HttpClientErrorException: 400
已解决:org.springframework.web.client.HttpClientErrorException: 400
屿小夏
2024/09/16
3920
【Java】已解决:org.springframework.web.client.HttpClientErrorException: 400
Restful API 设计指北
近期学习了Go语言,跟着七米在学习,学习过程中了解到了 API 的一个设计规范,也就是本文要讲的 Restful API 设计模式,现在互联网处在前后端分离的阶段,API 的书写及规范化是非常重要的,针对于 API 中 Restful API 中设计比较规范的是 Github API,可以直接访问他们的 https://api.github.com 直接查看 Github 针对与公共接口的链接及使用方法。
Meng小羽
2020/03/12
7260
你知道 410+ 有哪些状态码吗?
客户端不要给我扔这么大的 Request Body,我处理不过来。在服务器端一般与处理解析 Content-Body 的中间件一起使用。
山月
2023/01/10
7150
你知道 410+ 有哪些状态码吗?
后端服务不得不了解之限流
现在说到高可用系统,都会说到高可用的保护手段:缓存、降级和限流,本博文就主要说说限流。限流是流量限速(Rate Limit)的简称,是指只允许指定的事件进入系统,超过的部分将被拒绝服务、排队或等待、降级等处理。
好好学java
2021/02/07
1.7K0
spring cloud gateway网关使用JMeter进行限流测试与熔断
限流就是限制流量,因为服务器能处理的请求数有限,如果请求量特别大,我们需要做限流(要么就让请求等待,要么就把请求给扔了), 限流可以保障我们的 API 服务对所有用户的可用性,也可以防止网络攻击。在高并发的应用中,限流是一个绕不开的话题。
用户10196776
2023/10/17
5710
spring cloud gateway网关使用JMeter进行限流测试与熔断
Python-Requests库进阶用法——timeouts, retries, hooks
Python HTTP 请求库在所有编程语言中是比较实用的程序。它简单、直观且在 Python 社区中无处不在。大多数与 HTTP 接口程序使用标准库中的request或 urllib3。
软测小生
2021/08/06
3.2K0
精讲高并发核心编程,限流原理与实战,限流策略原理与参考实现
在通信领域中,限流技术(Time Limiting)被用来控制网络接口收发通信数据的速率,实现通信时的优化性能、较少延迟和提高带宽等。
愿天堂没有BUG
2022/10/28
3010
精讲高并发核心编程,限流原理与实战,限流策略原理与参考实现
面试题:设计限流器
除了客户端和服务器端的实现,还有另一种方式。我们不是在 API 服务器上设置速率限制器,而是创建一个速率限制器中间件,对你的 API 的请求进行限流。
灬沙师弟
2024/02/22
4050
面试题:设计限流器
RESETful API 设计规范
如果你的应用很庞大或者你预计它将会变的很庞大,那 应该 将 API 放到子域下(api.example.com)。这种做法可以保持某些规模化上的灵活性。
全栈程序员站长
2022/06/29
1.7K0
从京东618秒杀聊聊秒杀限流的多种实现!
俗话说的好,冰冻三尺非一日之寒,滴水穿石非一日之功,罗马也不是一天就建成的。两周前秒杀案例初步成型,分享到了中国最大的同性交友网站-码云。同时也收到了不少小伙伴的建议和投诉。我从不认为分布式、集群、秒杀这些就应该是大厂的专利,在互联网的今天无论什么时候都要时刻武装自己,只有这样,也许你的春天就在明天。
Java后端技术
2018/08/09
1.9K0
从京东618秒杀聊聊秒杀限流的多种实现!
推荐阅读
相关推荐
restful api设计最佳实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验