TGViewer
Библиотека шарписта | C#, F#, .NET, ASP.NET Библиотека шарписта | C#, F#, .NET, ASP.NET @csharpproglib · 21.6K subscribers
Post #7293 776
⚙️ Task.WhenAll не ограничивает число запросов

Если передать в Task.WhenAll тысячу задач обращения к API, он дождётся их завершения. Но ограничивать число одновременных запросов за вас не будет.

Когда нужно обрабатывать коллекцию с заданным параллелизмом, пригодится Parallel.ForEachAsync:

await Parallel.ForEachAsync(
ids,
new ParallelOptions
{
MaxDegreeOfParallelism = 8,
CancellationToken = cancellationToken
},
async (id, token) =>
{
await LoadAsync(id, token);
});


Здесь одновременно выполняются не более восьми обработчиков. Токен отмены передаётся внутрь каждой итерации. Поддерживается и источник IAsyncEnumerable.

⏬ Восемь обработчиков — не восемь запросов в секунду

Это ограничение конкурентности, а не rate limit. Если API разрешает фиксированное число запросов за минуту, нужен отдельный механизм ограничения частоты. И не делите один DbContext между параллельными итерациями: каждый обработчик должен работать с подходящим ему контекстом.

🔗 Источник

📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека шарписта

#sharp_view
  • 👍 2
More from @csharpproglib
  1. Oct 15, 2026🧑‍💻 Какие навыки помогают вам в разработке в 2026 году? Что вы чаще используете в работе…
  2. Oct 15, 2026🧩 Mapperly: маппинг DTO, который можно открыть и прочитать Вручную перекладывать двадцать…
  3. Oct 14, 2026Post #7290
  4. Oct 14, 2026Общая папка для работы Claude Code и Codex Луи-Франсуа Бушар собрал заметки, инструкции-ск…
  5. Oct 14, 2026🧠 Кеш пустой, а в базу одновременно пришли сто запросов Популярная запись исчезла из кеша…
  6. Oct 13, 2026🚀 C# Dev Kit: сначала открытый файл, потом весь solution Открыли большой solution и ждёте…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →