gpt4 book ai didi

ios - URLRequest 在超时前失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:54 25 4
gpt4 key购买 nike

我想为不同的请求设置不同的超时时间。我的请求例程如下所示:

var request = URLRequest(url: url,
cachePolicy: .reloadIgnoringLocalCacheData,
timeoutInterval: timeout)
// setting headers and body...
sessionTask = localURLSession.dataTask(with: request)
sessionTask?.resume()

其中 localURLSession 被定义为公共(public)变量:

public var localURLSession: Foundation.URLSession {
return Foundation.URLSession(configuration: localConfig, delegate: self, delegateQueue: nil)
}

public var localConfig: URLSessionConfiguration {
let res = URLSessionConfiguration.default
res.timeoutIntervalForRequest = Self.ordinaryRequestsTimeout // 20 seconds
return res
}

然后我有两个问题:

  1. 当我同时发出 2 个请求时 100% 丢失网络链接调节器(第一个超时 20 秒,第二个超时 40秒),两个请求都在 8 秒后失败。我不明白为什么。
  2. 当我第一次提出 100% 损失的请求时 Network Link Conditioner,它像预期的那样超时失败,但是 重试此请求在 1 秒后失败。我想等所有 每次超时。

最佳答案

很可能,对于 8 秒的失败,DNS 请求超时,因此您根本没有连接。

对于 1 秒的失败,操作系统可能已经断定主机不可访问,甚至不会再试一次,直到网络发生变化或者它成功地向某处某个主机发出至少一个请求(负 DNS 缓存)。

就是说,如果没有数据包跟踪,我无法确定这些说法中的任何一个。

关于ios - URLRequest 在超时前失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56017586/

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