TGViewer
C# Portal | Программирование C# Portal | Программирование @kodblog · 13K subscribers
Post #2434 979
Ваш API отвечает пять минут? Это уже захват заложников

Пользователь смотрит на индикатор загрузки. Запрос занимает ресурсы сервера. Балансировщик обрывает соединение по тайм-ауту. Клиент повторяет запрос — и один отчёт строится уже дважды. Здесь поможет перенос долгой операции в фоновую обработку.

Как выглядит схема:

• Клиент отправляет POST /reports.
• API ставит задачу в очередь и быстро возвращает 202 Accepted с заголовком Location: /reports/42.
• Фоновый воркер забирает задачу и выполняет пятиминутную работу.
• Клиент запрашивает GET /reports/42 и получает статус Running.
• При следующей проверке получает Done и ссылку на результат.

Что это даёт:

• HTTP-запросы завершаются быстро, не дожидаясь построения отчёта.
• Длительность фоновой задачи больше не упирается в тайм-аут запроса.
• Воркеры масштабируются независимо от API.
• Повторная проверка статуса не запускает создание отчёта заново.

Для безопасного повторения самого POST предусмотрите ключ идемпотентности, чтобы не создавать дубликаты задач.

Ещё две детали:

• Возвращайте Retry-After, чтобы клиент понимал, через какое время снова проверить статус.
• Используйте SignalR или webhook, если нужно уведомлять о готовности вместо периодических запросов.

Длительная операция становится отдельным ресурсом: её можно создать, проверить состояние и получить результат. А как вы обрабатываете долгие задачи в своих API: polling, webhooks или SignalR?

👉 @KodBlog
  • ❤ 5
  • 🍾 1
More from @kodblog
  1. Oct 4, 2026Пишете код каждый день? Помните о пяти вещах: • Сначала добейтесь, чтобы код работал. • За…
  2. Oct 4, 2026Хватит возвращать BadRequest("какая-то строка") Когда каждый эндпоинт возвращает ошибки в…
  3. Oct 3, 2026Health Checks в .NET — два вызова методов • AddHealthChecks() регистрирует необходимые сер…
  4. Oct 2, 2026Архитектура ПО — это просто?.. Объединяйте связанные концепции, и приложения станут лучше.…
  5. Oct 2, 2026Union types в C# 15 Годами разработчики C# имитировали union types — типы-объединения — че…
  6. Oct 1, 2026Что такое RBAC — управление доступом на основе ролей? RBAC помогает организовать авторизац…
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 →