Python-система: FastAPI-сервис обработки заявок с очередью Redis

Заявка уходит в очередь за 100 мс, воркер пишет в CRM и почту — на пике ничего не теряется.

Стек Docker, FastAPI, PostgreSQL, Python, Redis

Клиент — B2B-сервис заявок на монтаж (200+ заявок/день). Старый синхронный PHP принимал POST и падал при пиках; заявки терялись, статусы не обновлялись. Нужен надёжный API + асинхронная обработка.

Задача: Python-система — FastAPI принимает заявку → Redis queue → worker обрабатывает (валидация, CRM, email) → статус в PostgreSQL. REST для фронта и мобильного приложения.

  • POST /applications → 202 Accepted + application_id;
  • Redis List / Stream + worker (asyncio или RQ);
  • worker: AmoCRM create deal, SendGrid email, assign manager by region;
  • GET /applications/{id}/status — pending / processing / done / failed;
  • retry failed jobs, dead letter queue, admin endpoint replay;
  • JWT auth, rate limit, OpenAPI docs;
  • Docker Compose: api + worker + redis + postgres.

Стек: Python 3.11, FastAPI, Redis, PostgreSQL, SQLAlchemy, Docker. Приёмка: load test 500 req/min, 0 lost applications.

Итог: uptime 99.9%; время ответа API < 100 ms (очередь — async). NDA: сервис не публикуется.