Как организовать обработку долгих операций в Node.js API?

Senior
261 просмотров
AFK Offer AI

Долгие операции (>30 секунд) нельзя держать в HTTP соединении. Паттерны: 1) Async job: POST /tasks → 202 Accepted + taskId. Worker обрабатывает. GET /tasks/:id — статус. Webhook когда готово. 2) SSE: клиент подписывается, сервер стримит прогресс. 3) WebSocket: bidirectional для прогресса и управления. Реализация: BullMQ job + Redis для статуса. job.on("progress", percent => redis.set(taskId, percent)). GET /tasks/:id читает из Redis. При serverless (Lambda): Step Functions для оркестрации долгих workflows.

Следующий вопрос

Как логировать HTTP запросы в Express?