Python-система: фоновые задачи (API + Celery/RQ + PostgreSQL)
Тяжёлый export уходит в Celery: статус, прогресс и ссылка на файл — без timeout и дублей по F5.
Celery, FastAPI, PostgreSQL, Python, Redis
Клиент — маркетплейс отчётности для продавцов. Export «все заказы за год» занимал 3–8 минут — HTTP timeout, пользователи жали F5 и создавали дубли. Нужна система фоновых job с отслеживанием статуса.
Задача: API создаёт job → Celery worker выполняет (export CSV, генерация PDF, sync с API маркетплейса) → статус и download link в PostgreSQL. Polling или webhook по готовности.
- POST /jobs {type, params} → job_id;
- Celery + Redis broker; tasks: export_orders, generate_report, sync_inventory;
- job states: queued / running / success / failed; progress 0–100 для long tasks;
- GET /jobs/{id} — status, result_url (S3 presigned), error message;
- retry policy, max runtime, cancel endpoint;
- Flower или custom dashboard для ops;
- cleanup old exports cron.
Стек: Python, FastAPI, Celery, Redis, PostgreSQL, S3, Docker, K8s optional. Приёмка: export 100K rows без timeout, resume after worker restart.
Итог: тяжёлые операции без блокировки UI; жалобы на «зависло» −95%. NDA: продукт не публикуется.