当前位置: 首页 > 知识库问答 >
问题:

如何使用Java进行10次请求/秒API调用以避免外部API速率限制?

长孙知
2023-03-14

我正在进行第三方GET API调用,该调用具有每秒10个请求的速率限制。如何成功控制http GET请求以避免达到第三方的速率限制。我正在使用Vertex Webclient进行GET请求。

共有1个答案

贝财
2023-03-14

使用CompletableFutures有两种方法:

  1. 触发10个使您的请求完全可行的未来,然后将线程发送到Hibernate1秒-参见runAsync()和供应Async()方法。
  2. 执行1CompletableFuture并Hibernate1/10秒。

如果您将CompletableFutures存储在列表/映射中(任何最适合您的情况),那么您可以。获取()稍后您需要访问结果时的答案。

 类似资料:
  • 我假设有很多情况需要调用基于值列表的外部RESTful服务。 现在对于这些productId中的每一个,我想并行调用一个外部endpoint。大致如下: 你会如何转换这个 到 当所有通话成功完成时。 一个人如何使用可完成的未来来实现这一点? 我想我要问的是,如何等待所有调用完成,然后以集合的形式获得结果。

  • 问题内容: 我在Stack Exchange上的一个问题中看到,限制可能是每15分钟的请求数的函数,并且还取决于算法的复杂性,只不过这并不复杂。 所以我使用这段代码: 我总是收到Twitter限制错误: 问题答案: 问题在于您的区块放置在错误的位置。将数据插入数据库将永远不会产生-对其进行迭代。我建议重构您的代码以在无限循环中调用方法。该调用应放置在块中,因为它可能引发错误。 代码大致如下所示:

  • 在WebAPI中有一个非常好的用于限制API速率的库WebAPI 如Wiki页面所述,我可以根据API调用的授权令牌头对API进行评级限制 但是,如果此api速率限制超过,我如何在接下来的5分钟内阻止api调用?此外,在未来5分钟内的任何请求都不会重置速率限制超出时间。 我检查了代码,但找不到这个功能。如果有人能建议,还有其他方法吗?

  • 我正在开发应用程序以从其他站点获取数据并显示在的html表中。 我使用Guzzes发送请求。(stackoverflow问题,最后使用Guzzes) 当我调用基于到外部API的请求时,它向我显示正确的数据! 我的问题是: 当我调用链接以获取laravel中的数据时,它会转到错误。 一些API地址只是在中工作, 我该怎么办?

  • 我正在使用ProjectReactor使用rest从web服务加载数据。这是与多个线程并行完成的。我开始达到web服务的速率限制,因此我希望每秒最多发送10个请求,以避免出现这些错误。用Reactor我该怎么做? 使用zipWith(Mono.delayMillis(100))?还是有更好的办法? 非常感谢。

  • 问题内容: 我有这样的代码: 实例化B可以按预期工作,但是实例化C无限递归并导致堆栈溢出。我该如何解决? 问题答案: 实例化C调用时,仍然是C,因此super()调用将其带回B。 调用super()时,请直接使用类名。因此,在B中,请致电,而不是(最好在C中使用)。在Python 3中,您可以仅使用不带参数的super()来实现同一目的