Создайте задачу с ID, надёжно поставьте её в очередь и верните 202 со ссылкой на статус. Worker выполняет парсинг и сохранение, клиент опрашивает статус или получает событие.
Как вынести долгий парсинг из HTTP-запроса
Создайте задачу с ID, надёжно поставьте её в очередь и верните 202 со ссылкой на статус. Worker выполняет парсинг и сохранение, клиент опрашивает статус или получает событие.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Операция parse_text_and_save_to_postgres занимает около 10 секунд. API должен быстро подтвердить приём, а клиент — получить итог позже. Как организовать обработку?
Ответ
Создайте задачу с ID, надёжно поставьте её в очередь и верните 202 со ссылкой на статус. Worker выполняет парсинг и сохранение, клиент опрашивает статус или получает событие.
Определите queued, running, succeeded и failed, лимиты входа и повторные попытки. Сохранение должно быть идемпотентным, чтобы повтор job не создал дубли. Не держите транзакцию БД на время внешней работы. Простая фоновая функция внутри HTTP-процесса не гарантирует переживание его рестарта.