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

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

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

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

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

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

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

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

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

参考文章

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。

Original: https://www.cnblogs.com/lingyejun/p/16440398.html
Author: 翎野君
Title: org.springframework.web.client.HttpClientErrorException: 429 Too Many Requests

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540143/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 2022-8-23 css

    ✏️CSS 一个标签可以有多个css样式浏览器处理冲突的能力,如果一个属性通过两个相同的选择器设置到这个元素上,会根据样式的层叠规则样式的层叠规则——按照样式的声明顺序来层叠的【就…

    Java 2023年6月13日
    070
  • Java中Comparable讲解

    Comparable是排序接口;若一个类实现了Comparable接口,就意味着”该类支持排序”。可以使用Arrays.sort()对改类进行排序。 讲解 …

    Java 2023年5月29日
    069
  • 初等数论

    若整数 n > 1,则 n 可以写为一系列的 质数之积 [n=p_1\cdot{p_2}\cdot{p_3}\ldots ] 上述可以拓展为 分解质因数,并且又因为可能存在 …

    Java 2023年6月16日
    063
  • 在Golang中是锁或Channel还是Atomic

    与其他编程语言一样在并发环境下如不对多个 goroutine(线程)访问或修改的共享资源元素的进行控制,让进入 临界区的对象互斥。就可能会出现数据异常情况;一个 非线程安全对象如下…

    Java 2023年6月16日
    084
  • vscode运行C/C++及基础设置(超简单详细)

    vscode运行C/C++及基础设置(超简单详细) 文章目录 vscode运行C/C++及基础设置(超简单详细) * 链接 – 教程链接 vscode下载官网 ming…

    Java 2023年6月5日
    0120
  • RabbitMQ 如何保证全链路数据100%不丢失?

    我们都知道,消息从生产端到消费端消费要经过3个步骤: 生产端发送消息到RabbitMQ; RabbitMQ发送消息到消费端; 消费端消费这条消息; 这3个步骤中的每一步都有可能导致…

    Java 2023年5月30日
    093
  • nginx + nginx-rtmp-module + springboot 搭建直播流服务器实现推流、拉流实时直播功能

    业务需求 最近公司在做养老相关的业务,现在需要子女从小程序端对家里的老人通过家庭终端交互屏进行实时看护。 解决方案 第三方的一些现成的服务:腾讯音视频通话、直播功能; 阿里的音视频…

    Java 2023年6月13日
    057
  • 机器学习基础知识

    ROC曲线含义 DL 卷积运算:参考吴恩达课程中的边缘检测,滑动窗口,乘法加法 运算步骤:滑动窗口,逐个相乘再相加 运算结果:新的矩阵,(s-f)/2 + 1 padding: 在…

    Java 2023年6月7日
    077
  • Mybatis逆向工程所生成的mapper接口时出现错误

    调用mybatis的mapper接口中的 selectByExample()方法抛出异常: java.lang.NoSuchMethodException: com&#x2…

    Java 2023年6月7日
    0106
  • 关于系统权限的设计-位操作

    本文讨论是权限设计的其中一种思路,有它自己的优缺点,不一定适用于所有系统。 一、Linux文件权限 大家都知道,Linux上有三种文件权限: r:表示读取,对应的数字为 4; w:…

    Java 2023年6月9日
    082
  • springboot 项目中通过 mybatis-spring-boot-starter 来使用mybatis

    导入依赖 org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.0 通过 @Mapper 注解标注使用的文件,通过 @Se…

    Java 2023年5月30日
    0231
  • 算法设计与分析———分治算法

    一、分治法的设计思想 分治法将一个难以直接解决的大问题划分为一些规模较小的子问题,分别求解各个子问题,再合并子问题的解得到原问题的解。 分治法的典型情况 二、分治法的求解过程 一般…

    Java 2023年6月5日
    088
  • 3.搭建SSM

    1.创建项目在Eclipse中创建项目,右键解决报错即可导入MyEclipse中,防止Myeclipse中总是报错问题2.导包(以后可能会补充) org.springframewo…

    Java 2023年6月13日
    071
  • 【Redis】Redis Cluster-集群请求命令处理

    集群请求命令处理 在Redis的命令处理函数 processCommand(server.c)中有对集群节点的处理,满足以下条件时进入集群节点处理逻辑中: 启用了集群模式,通过 s…

    Java 2023年6月8日
    090
  • Flutter Could not resolve project :path_provider_macos.

    错误信息: 如果是在纯Flutter项目执行,这样基本就修复了。 如果是Flutter以Module形式被原生项目依赖,那么有可能不行,这时候,就按报错提示修复,原生项目找到 cs…

    Java 2023年5月29日
    0171
  • 如果程序员没了手!

    前些天手摔伤了,一直养着,这段时间最大的体会是:没有手真麻烦,没有右手真痛苦。 只能左手上啦 正好赶上最近事情也多,一些事务性的工作啦等等,总是在不停地求助,住院期间就不说了,幸好…

    Java 2023年5月30日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球