【发布时间】:2016-12-30 18:21:23
【问题描述】:
我正在开发一个需要大量使用 API 的 Swift 项目。一切正常,但有时,我得到 Code=-1001 "The request timed out"。调用 API 时出错。为了正确测试它,我使用循环并迭代它 1000 次,调用相同的 API。
我正在使用公共 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次,没有出现Failure的情况。
我不明白为什么当我多次异步访问 API 时延迟会以这种方式增加。我知道可以通过增加超时时间来避免错误。但我想知道它首先发生的原因。
任何帮助将不胜感激。
【问题讨论】:
标签: ios swift api request connection-timeout