在两个单独的速率限制端点之间同步请求

在两个单独的速率限制端点之间同步请求

在网络开发中,我们经常会遇到需要在两个单独的速率限制端点之间进行同步请求的情况。这时,我们需要找到一种方法来确保请求在合适的时间内发送,并且在达到速率限制时进行等待。在这篇文章中,php小编苹果将会介绍一种解决方案,帮助您实现这种同步请求的功能,确保数据的准确性和稳定性。让我们来看看这个解决方案的具体实现吧!

问题内容

我正在使用一些第三方 api,每个 api 都有自己的速率限制。端点1的速率限制为10/s,端点2的速率限制为20/s。

我需要通过端点 1 处理数据,该端点将返回一个对象数组(2-3000 个对象之间)。然后,我需要获取每个对象并将一些数据发送到第二个端点,同时遵守第二个端点的速率限制。

我计划在 go 例程中一次批量发送 10 个请求,确保如果所有 10 个请求都在

最终,我希望能够限制每个端点一次发出的并发响应数量。特别是如果我必须针对由于服务器 500 多个响应等原因导致的失败请求进行重试。

出于问题的目的,我使用 httpbin 请求来模拟以下场景:

package main import ( "bytes" "encoding/json" "fmt" "io" "net/http" "sync" "time" ) type HttpBinGetRequest struct { url string } type HttpBinGetResponse struct { Uuid string `json:"uuid"` StatusCode int } type HttpBinPostRequest struct { url string uuid string // Item to post to API } type HttpBinPostResponse struct { Data string `json:"data"` StatusCode int } func main() { // Prepare GET requests for 500 requests var requests []*HttpBinGetRequest for i := 0; i 登录后复制