繁体   English   中英

在限制请求数量的同时异步检索REST服务中的信息

[英]Retrieve information from a REST service asynchronously while throttling the number of requests

我有一个程序需要从Atom提要中获取一些数据。 我尝试了两种方法,但两种方法都运作良好。

我已经使用WebClient同步下载我需要的所有帖子,但由于有几千个,服务很慢,需要花费很多时间。

我已经尝试过(第一次)async / await,新的HttpClient和Task.WhenAll。 不幸的是,这导致成千上万的请求命中服务并将其关闭。

如何并行运行100个请求?

您可以将Parellel与ParallelOptions.MaxDegreeOfParallelism一起使用

ParallelOptions.MaxDegreeOfParallelism属性

或者具有有限集合大小的BlockingCollection

BlockingCollection概述

我会推荐BlockingCollection

听起来你已经有一个解决方案,你可以立刻完成很多工作。 我建议只在其上添加另一个层,它只是循环遍历所有帖子,但一次只处理100个。

现在你可能有:DownloadAll(List ListofPosts)在DownloadAll里面你可能最后都要等了。

相反:For循环从1到(ListofPosts Count / 100)DownloadAll(ListofPosts.Skip(xxx).Take(100));

显然不是那里真正的代码,但是你可以做100块,而你的主要功能几乎没有变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM