У меня есть парсер, который обрабатывает около 2000 страниц, которые я пытался ускорить с помощью цикла Parallel.ForEach. Мой текущий код (обрезанный для краткости):
Parallel.ForEach(dataTable1.AsEnumerable(), row =>
{
scrape();
}
);
public void scrape()
{
HtmlWeb htmlWeb = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = htmlWeb.Load("http://www.website.com");
doScraping(doc);
}
Когда это использовало обычный цикл foreach
, это сработало. Теперь он будет обрабатывать некоторое количество строк, а затем я начинаю получать следующие исключения при попытке получить HTMLDocument
:
В System.dll произошло первое случайное исключение типа «System.Net.WebException».
Возникло первое случайное исключение типа «System.Net.WebException» в HtmlAgilityPack.dll.
Время операции истекло
Что вызывает тайм-аут при работе в параллельном цикле? Он пройдет через первые 150-300 строк, а затем истечет время ожидания для каждой последующей строки.