Как вынести долгий парсинг из HTTP-запроса

Создайте задачу с ID, надёжно поставьте её в очередь и верните 202 со ссылкой на статус. Worker выполняет парсинг и сохранение, клиент опрашивает статус или получает событие.

Короткий ответ

Что ответить на собеседовании

Создайте задачу с ID, надёжно поставьте её в очередь и верните 202 со ссылкой на статус. Worker выполняет парсинг и сохранение, клиент опрашивает статус или получает событие.

Подробный разбор

Ответ с пояснениями

Условие

Операция parse_text_and_save_to_postgres занимает около 10 секунд. API должен быстро подтвердить приём, а клиент — получить итог позже. Как организовать обработку?

Ответ

Создайте задачу с ID, надёжно поставьте её в очередь и верните 202 со ссылкой на статус. Worker выполняет парсинг и сохранение, клиент опрашивает статус или получает событие.

Определите queued, running, succeeded и failed, лимиты входа и повторные попытки. Сохранение должно быть идемпотентным, чтобы повтор job не создал дубли. Не держите транзакцию БД на время внешней работы. Простая фоновая функция внутри HTTP-процесса не гарантирует переживание его рестарта.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее