是否可以使用一个URLRequest
为每个URLSession
设置不同的超时间隔?
我尝试设置
urlRequest.timeoutInterval = 20 * 60
,但是它已被URLSession忽略,并且默认情况下60秒后请求超时,并失败。
仅此设置更改超时:
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 20 * 60 // 20 min
self.session = URLSession(configuration: configuration)
但是20 * 60 // 20 min
应用于该会话中的所有URLRequest
。
我想允许某些任务等待更长的时间来响应,但是默认情况下60秒后,其余任务应该默认失败。
可以吗?还是我应该使用多个URLSession
PS。在研究过程中,我发现了这个错误: https://bugs.swift.org/browse/SR-2680
答案 0 :(得分:1)
您可以为每个单独的URL配置超时。只是您不能将超时设置为大于URLSession的配置本身。
在某些情况下,此配置中定义的策略可能是 被提供的
NSURLRequest
对象指定的策略覆盖 完成一项任务。遵守在请求对象上指定的任何策略 除非会议的政策更具限制性。例如,如果 会话配置指定不应将蜂窝网络 允许,NSURLRequest
对象无法请求蜂窝网络。
默认超时为60秒。您将设置为1200,更大。因此它不起作用。增加配置,然后可以不同地配置每个URL的超时。
答案 1 :(得分:0)
在将URLSession分配给URLSession之后修改其属性。您需要单独创建配置,并使用它初始化一个单独的实例。