在运行AFHTTPSessionManager的AFNetworking 2中设置对并发任务的限制

 小song喪_774 发布于 2023-01-30 18:42

所以我知道在旧的AFNetworking中使用AFHTTPClient是可能的,我知道如果我使用AFHTTPRequestOperationManager我可以设置队列的限制,但我不能让AFHTTPSessionManager一次只运行x个请求而不是我自己实现它使用成功块(我不想).

以下代码不限制我的连接:

AFHTTPSessionManager*manager = [AFHTTPSessionManager manager]; manager.operationQueue.maxConcurrentOperationCount = 1;

根据这里有趣的讨论,我向服务器提出了很多请求,并且在我获得超时之前将其阻塞,因此我确实需要限制并发连接.

我错过了什么?

1 个回答
  • AFHTTPSessionManager使用任务而不是操作(NSURLSessionDataTask特别是),这就是您无法设置操作队列的原因.

    正如您在此类的实现中所看到的,任务立即启动([task resume])而不会添加到任何类型的队列中.

    因此,遗憾的是,没有内置的AFNetworking方法来设置使用的并发任务数量的限制AFHTTPSessionManager.

    可能的选择:

      使用AFHTTPRequestOperationManager替代(这是我在做什么)

      构建一个NSOperation以任务作为属性的子类,并在[operation start]子类的方法中启动任务

      创建Grand Central串行队列,并在此队列中创建和启动任务

      如果您的请求都是同一主机,请直接访问HTTPMaximumConnectionsPerHost基础URL加载系统中的选项,如下所示:

      [NSURLSessionConfiguration defaultSessionConfiguration].HTTPMaximumConnectionsPerHost = 4;
      

      这种方法有许多注意事项,Apple文档中对此进行了讨论.

    如果您最终做#2,请将其作为拉动请求提交给AFNetworking - 这将是一个受欢迎的补充.

    2023-01-30 18:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有