swift - Alamofire 全局队列,请求之间有暂停

标签 swift alamofire

我正在使用的 API 每秒最多允许 5 个请求。如果超过此限制,API 将返回 429 服务器错误。

我的直觉表明,要处理这个问题,我应该将所有请求放入某种形式的串行队列中,并在请求之间强制执行 0.21 秒的延迟,但我不太确定如何实现这一点。我也不确定使用串行队列是否是一个好主意,因为那样我将失去同时运行多个请求的能力。

我正在使用适配器和重试器对象来处理刷新我的 OAuth session token ,所以我想这可能是放置我的逻辑的好地方。

有人以前做过类似的事情,或者有什么想法吗?

最佳答案

实际上我可能会走不同的方向,而不是试图限制所有请求,我会查看每个请求的响应,如果是 429,我会通过异步闭包重新排队请求1秒的时间延迟。

这意味着只要请求缓慢传入,它们就会立即执行。但是当您尝试第 6 个请求时,它会转移到下一秒。

您必须考虑的唯一问题(无论采用哪种解决方案)是,如果请求的传入速度持续快于 API 允许的速度,会发生什么情况。 IE。如果每秒收到 6、7 或 100 个请求,会发生什么情况?您将如何处理永远不会被执行的额外请求。

在某些时候,您的代码将不得不开始失败的请求。或者,您需要插入服务器人员运行更多服务器或为您提供更多带宽。

关于swift - Alamofire 全局队列,请求之间有暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51470595/

相关文章:

ios - 是否可以在同一个应用程序中同时运行 AFNetworking 和 Alamofire?

ios - 如何在再次单击表格 View 时停止歌曲并在单击另一个单元格时播放另一首歌曲

iOS , ld : framework not found GoogleMaps for architecture arm64

swift4 : Garbage at end. 错误

swift - Alamofire:是否有像 AFNetworkingOperationDidFinishNotification 这样的通知?

ios - PUT 方法的 Alamofire Content-Type application/json

json - 抛出异常试图将 NSSingleEntryDictionary 转换为 NSArray

ios - 调整 UIImage 大小以适应表格单元格 ImageView

swift - 旋转光照环境内容ARKit和SceneKit

ios - SIGABRT :Upload tasks from NSData are not supported in background sessions