Как установить ограничение на максимальное задание для HttpClient - PullRequest
0 голосов
/ 07 мая 2019

Я получаю «429 Too Many Request» при отправке нескольких запросов на веб-сайт. Я хотел бы иметь возможность отправлять несколько запросов для получения ответа с URL-адреса с ограничением или запускать задачу в виде пакета, чтобы я не получил сообщение об ошибке с веб-сайта.

Ниже код, который я устал. Он работает нормально, но после отправки нескольких запросов выдает слишком много сообщений о запросах.

const int maxConcurrency = 15;
try
{
    List<Task<HttpResponseMessage>> taskList = new List<Task<HttpResponseMessage>>();
    List<string> replies = new List<string>();

    for (int i = 0; i < lbURLToSearch.Items.Count; i++)
    {

        taskList.Add(reusableHTTPClient.GetAsync(lbURLToSearch.Items[i].ToString()));
        if (taskList.Count >= maxConcurrency)
            Task.WaitAny(taskList.ToArray());
    }

    var httpClientResponse = await Task.WhenAll(taskList);

    foreach (var htmlContent in httpClientResponse)
    {
        using (var reader = new StreamReader(await htmlContent.Content.ReadAsStreamAsync()))
        {
            //replies.Add(JsonConvert.DeserializeObject<string>(reader.ReadToEnd()));
            rawHTMLFromSource += await reader.ReadToEndAsync();
        }
    }

    foreach (var reply in replies)
    {
        // TODO:        
    }
}
catch
{

}

Что я могу сделать, чтобы уменьшить количество запросов?

...