我使用的是限制使用的API,比方说:每秒不超过10个电话,每天不超过5000个电话.
我在beanstalkd队列进程作业中处理这些调用.考虑到API的限制,如何限制此作业的处理.
最佳答案 当您使用
Beanstalkd时,您可以让管暂停一段时间.
当您预订作业,并且您知道该呼叫期间API调用失败时,您可以暂停管道X秒.
你可以从你的API响应中找出暂停管的时间(通常它们会被锁定直到时间X),或者在接下来的60秒内开始自适应,例如暂停,并在旅途中增加/减少.
如果您知道在将作业放入队列之前可以延迟或分散,则还可以为作业添加延迟,因此不会立即执行,这样您就可以随时分配作业.
还有一篇关于distributed rate limiting using redis的好文章