我有一個程序需要從Atom提要中獲取一些數據。我嘗試了兩種方法,但都沒有效果。異步檢索REST服務中的信息,同時限制請求數
我用WebClient同步下載了我需要的所有帖子,但是因爲有幾千個,而且服務很慢,所以需要很多小時。
我試過(第一次)async/await,新的HttpClient和Task.WhenAll。不幸的是,這導致成千上萬的請求觸發服務並導致服務中斷。
我該如何運行100個並行請求?
我有一個程序需要從Atom提要中獲取一些數據。我嘗試了兩種方法,但都沒有效果。異步檢索REST服務中的信息,同時限制請求數
我用WebClient同步下載了我需要的所有帖子,但是因爲有幾千個,而且服務很慢,所以需要很多小時。
我試過(第一次)async/await,新的HttpClient和Task.WhenAll。不幸的是,這導致成千上萬的請求觸發服務並導致服務中斷。
我該如何運行100個並行請求?
您可以用ParallelOptions.MaxDegreeOfParallelism
ParallelOptions.MaxDegreeOfParallelism Property
還是一個BlockingCollection使用中並行與有界集合的大小
我會建議BlockingCollection
聽起來像你已經有一個解決方案,你可以一次完成很多事情。我建議只在所有帖子中循環添加另一個圖層,但一次只能處理100個圖層。
現在你可能有:DownloadAll(List ListofPosts)DownloadAll你可能會在最後等待。
改爲: For循環從1到(ListofPosts Count/100) DownloadAll(ListofPosts.Skip(xxx).Take(100));
顯然不是真正的代碼,但你可以做幾百塊,對主要功能的改動不大。
您是否嘗試過的HttpWebRequest通過BeginGetResponse使用AsyncCallback? – 2013-03-18 17:32:42
這會怎樣幫助我? – TEst16 2013-03-18 17:34:27
從你的問題,我想你想要異步調用?或者你認爲這種技術(Google推薦)也會壓倒服務嗎? – 2013-03-18 17:40:34