Как я могу ограничить одновременные HTTP-запросы и обрабатывать тайм-ауты в .NET Core?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу ограничить одновременные HTTP-запросы и обрабатывать тайм-ауты в .NET Core?

Сообщение Anonymous »

Я работаю над приложением .NET Core, в котором мне нужно параллельно выполнить несколько HTTP-запросов. Сложность заключается в том, что количество запросов может сильно различаться в зависимости от действий пользователя: иногда их всего 5, а иногда и до 50.
Сейчас я я использую Task.WhenAll для их обработки следующим образом:

Код: Выделить всё

var tasks = urls.Select(url => httpClient.GetStringAsync(url)).ToArray();
var results = await Task.WhenAll(tasks);
Это хорошо работает для небольших чисел, но я беспокоюсь о том, что приложение перегружается, когда одновременно поступает слишком много запросов. Я также хочу убедиться, что если время одного запроса истечет или произойдет сбой, остальные все равно смогут завершиться должным образом.
Меня интересует несколько вещей:
Есть ли способ ограничить количество запросов, выполняемых одновременно, например 10 одновременно?
Если один из запросов выполняется слишком долго, как мне в этом убедиться? время ожидания не влияет на другие?
Хороша ли повторная попытка неудачных запросов или есть лучший подход для решения этой проблемы?
Я' Я не уверен, что Task.WhenAll — лучший способ справиться с этим или есть лучший шаблон, на который мне следует обратить внимание. Любые предложения будут замечательными!

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-net-core
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»