Параллельные http-запросы занимают столько же времени - PullRequest
0 голосов
/ 15 ноября 2018

Выполнение моей программы занимает много времени, и 99% из них отправляет запрос и ожидает ответа (URL-адрес одинаков для всех запросов).Вот почему я хочу отправить несколько HTTP-запросов, и в настоящее время я использую HttpClient.

По сути, мой код выглядит так:

Parallel.Foreach(objects, async obj => {
    //create content
    var client = new HttpClient {Timeout = new TimeSpan(0, 0, 0, 1, 0)};
    var response = await client.PostAsync(url, stringContent);
    //do something with response
});

Однако программа по-прежнему занимает почти столько же времени,Я попытался добавить в Main:

ServicePointManager.DefaultConnectionLimit = 100;

Я также изменил строку:

Parallel.ForEach(objects, parallelOptions: new ParallelOptions{MaxDegreeOfParallelism = 2}, body: async obj =>

Visual Studio показывает, что действительно 2 потока созданы, но время остается тем же.

Я также хочу отметить, что мне пришлось сделать Timeout достаточно большим, потому что в противном случае было бы TaskCanceledException.

...