一个程序使用N个并发的worker作为goroutine向API发送数据,这些worker从一个通道中消耗数据(ProducerConsumer模式)。API使用HTTP状态码发出无法处理更多数据的信号,并要求后退。
如果有任何关于这个可能已经解决的问题的链接,我将非常感激。
你可以使用选择来控制调用API
for _, k := range data {
select {
case <- backoff:
time.Sleep(backoffDuration)
default:
// Call API
// Check http status code and trigger backoff channel
backoff <- 1
}
}
这里是设置。
一旦这两个设置完成,你就可以通过操作backoff channel和backoffDuration来控制API调用,从而控制例程暂停工作的时间。
声明:这只是伪代码。
你可以查看Hashicorp的库。此处. 看起来它可以解决你的问题