我有一个程序需要从 Atom 提要中获取一些数据。我尝试了两种方法,但都没有奏效。
我已经使用 WebClient 同步下载了我需要的所有帖子,但是由于有几千个并且服务很慢,因此需要几个小时。
我已经(第一次)尝试了 async/await、新的 HttpClient 和 Task.WhenAll。不幸的是,这会导致成千上万的请求访问服务并将其关闭。
如何并行运行 100 个请求?
我有一个程序需要从 Atom 提要中获取一些数据。我尝试了两种方法,但都没有奏效。
我已经使用 WebClient 同步下载了我需要的所有帖子,但是由于有几千个并且服务很慢,因此需要几个小时。
我已经(第一次)尝试了 async/await、新的 HttpClient 和 Task.WhenAll。不幸的是,这会导致成千上万的请求访问服务并将其关闭。
如何并行运行 100 个请求?
您可以将 Parellel 与 ParallelOptions.MaxDegreeOfParallelism 一起使用
ParallelOptions.MaxDegreeOfParallelism 属性
或具有有限集合大小的 BlockingCollection
我会推荐 BlockingCollection
听起来您已经有了一个解决方案,您可以一次完成很多工作。我建议只在上面添加另一层,它只是循环遍历所有帖子,但一次只处理 100 个。
现在你可能有: DownloadAll(List ListofPosts) 在 DownloadAll 里面你可能在最后等待。
代替: For 循环从 1 到 ( ListofPosts Count / 100) DownloadAll(ListofPosts.Skip(xxx).Take(100));
显然那里不是真正的代码,但是你可以做 100 个块,而对你的 main 函数几乎没有改变。