如何使用 NSUrlsession 处理超过 1000 个 api 请求

Posted

技术标签:

【中文标题】如何使用 NSUrlsession 处理超过 1000 个 api 请求【英文标题】:How to handling more than 1000 api request using NSUrlsession 【发布时间】:2016-11-22 10:43:26 【问题描述】:
-(instancetype)initWithDataTaskWithUrlRequest:(NSURLRequest *)request WithIdentifierIndex:(NSString*)identifier

    self = [super init];
    if (self) 

        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:[NSString stringWithFormat:@"%@",[self uuid]]];
        configuration.HTTPMaximumConnectionsPerHost = 1;
        operationSession = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration ephemeralSessionConfiguration] delegate:self delegateQueue:nil];
        _sessionDataTask = [operationSession dataTaskWithRequest:request];
    

return self;

我有一个操作队列。并且在每个NSOperation 中,我都使用会话来下载内容。我有ephemeralSessionConfigurationDefaultSessionConfiguration。它适用于 200 0r 300 次操作。但是当操作增加到 1000 到 1000+ 它会给我超时,握手错误。请帮助我寻求最佳解决方案。

【问题讨论】:

【参考方案1】:

在同一个NSURLSessionConfiguration 中,您可以添加/增加超时为:

 configuration.timeoutIntervalForRequest  = KTimeOutValue; //Your timeout value 

【讨论】:

以上是关于如何使用 NSUrlsession 处理超过 1000 个 api 请求的主要内容,如果未能解决你的问题,请参考以下文章

作为命令行工具运行时,如何让 NSURLSession 处理 completionHandler

使用 NSURLSession 异步下载数据和处理

使用 NSURLSession 处理 HTTP 错误的最佳实践?

iOS:如何增加 NSURLSession 上传任务的块大小?

NSURLSession delegateQueue 的 maxConcurrentOperationCount 如何影响任务并发

从自定义类管理 NSURLSession 的完成处理程序