gpt4 book ai didi

ios - Swift 网络调用 : Latency keeps increasing and finally request timeout

转载 作者:行者123 更新时间:2023-11-28 06:35:50 29 4
gpt4 key购买 nike

我正在开发一个需要大量 API 消耗的 Swift 项目。一切正常,但有时,我收到代码=-1001“请求超时”。调用 API 时出错。为了正确测试它,我使用循环并将其迭代 1000 次,调用相同的 API。

我正在使用公共(public) API。 API是

let apiString = "https://oc-index.library.ubc.ca"

我的循环是

for i in 0 ..< 1000 {
Alamofire.request(.POST, apiString).responseJSON { response in
print(response.debugDescription)

if response.result.isFailure {
print("Failure")
}
}
}

现在在检查打印响应时,我看到每个新的 api 响应的延迟都会增加,达到 60.14 秒,最后请求超时。第一次调用 API 时,延迟为 2.225 秒,日志中的时间线,上次成功 API 的延迟为 60.14 秒。

API 在循环中第一次被命中时的时间线(当 i = 1 时)。

[Timeline]: Timeline: { "Request Start Time": 493671593.424, "Initial Response Time": 493671595.649, "Request Completed Time": 493671595.684, "Serialization Completed Time": 493671595.688, "Latency": 2.225 secs, "Request Duration": 2.260 secs, "Serialization Duration": 0.004 secs, "Total Duration": 2.264 secs }

上次成功 API 的时间表

[Timeline]: Timeline: { "Request Start Time": 493671593.859, "Initial Response Time": 493671621.500, "Request Completed Time": 493671621.513, "Serialization Completed Time": 493671621.519, "Latency": 60.140 secs, "Request Duration": 60.140 secs, "Serialization Duration": 0.007 secs, "Total Duration": 60.147 secs }

但是如果我同步执行,就不会出现这种超时的情况。 API 被调用 1000 次,没有失败的情况。

我不明白为什么当我多次异步访问 API 时延迟会以这种方式增加。我知道可以通过增加超时时间来避免错误。但我首先想知道它发生的原因。

如有任何帮助,我们将不胜感激。

最佳答案

网络栈将只允许一定数量的请求同时执行,并且会阻止新请求的发出,直到一些请求完成。因此,您的 1000 个请求会尽快开始,但后面的请求需要等待前面的请求完成才能真正连接,因此时间会增加。

有关如何处理这种情况的一些详细信息,请参阅此线程: NSURLSession concurrent requests with Alamofire

关于ios - Swift 网络调用 : Latency keeps increasing and finally request timeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39109348/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com