Веб-запрос медленнее в многократных задачах - PullRequest
0 голосов
/ 21 ноября 2018

Когда я работаю над WebRequest внутри задач под Mono, я обнаружил, что очень медленно получать ответ от сервера.Но это очень быстро, если отправка запроса из задачи.Я провел какое-то исследование, но для этого нет решения.Код хорошо работает в Windows и .NET Core в Linux.Так что я думаю, что это может быть проблемой на Моно.Надеюсь, кто-то может помочь мне выйти из этого.

    public static void Main(string[] args)
    {
        ServicePointManager.DefaultConnectionLimit = 12;
        ServicePointManager.Expect100Continue = false;
        var tasks = Enumerable.Range(0, 10).Select(async _ =>
        {
            var timer = Stopwatch.StartNew();
            await ValidateUrlAsync("https://www.bing.com");

            timer.Stop();
            Console.WriteLine(timer.ElapsedMilliseconds);
            //request.Abort();
        }).ToArray();

        Task.WaitAll(tasks);

        // Single request
        {
            var timer = Stopwatch.StartNew();
            ValidateUrlAsync("https://www.bing.com").ConfigureAwait(false).GetAwaiter().GetResult();
            timer.Stop();
            Console.WriteLine(timer.ElapsedMilliseconds);
        }
        Console.Read();
    }

    public static async Task<bool> ValidateUrlAsync(string url)
    {
        using(var response = (HttpWebResponse)await WebRequest.Create(url).GetResponseAsync())
            return response.StatusCode == HttpStatusCode.OK;
    }

Версия Mono: 5.16.0.179.Ubuntu: 16.04.2 LTS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...