Сервис для управления выплатами с API на Django/DRF и фоновой обработкой через Celery.
- Python 3.13
- Django 6.0.1
- DRF 3.16.1
- PostgreSQL 18
- RabbitMQ 4.1
- Celery 5.3.5
- pytest 9.0.2
- Ruff
- uv
- Docker + Docker Compose
.
├── payout_platform/ # Django настройки и URLs
├── payouts/ # Доменные модели, serializers, views, tasks
├── tests/ # Тесты (pytest)
├── docker-compose.yml # Docker orchestration
├── Dockerfile # Сборка образа
├── pyproject.toml # Зависимости и конфиги
└── Makefile # Удобные команды
Локально (uv):
uv sync --dev
Через Docker:
docker compose build
make up
make migrate
make worker
make test
Проект разворачивается на VPS или любом сервере с поддержкой Docker. В продакшн окружении используются отдельные сервисы для базы данных, брокера сообщений и кеша.
- PostgreSQL — для хранения данных.
- RabbitMQ — брокер сообщений для Celery.
- Docker + Docker Compose — для изоляции и управления сервисами.
- Django запускается через Gunicorn/Nginx для продакшн или через uvicorn/uv для dev-среды.
- Celery Worker запускается как отдельный контейнер, подключенный к RabbitMQ.
- Настройки проекта (база, broker, secret keys) берутся из переменных окружения.
# Подключаемся к VPS
ssh user@your-server
# Создаем директорию для проекта
mkdir -p ~/backend && cd ~/backend
# Клонируем репозиторий
git clone https://github.com/<username>/<repo>.git .
git checkout <branch>
# Подтягиваем переменные окружения (например, через .env или GitHub Secrets)
cp /path/to/env.prod .env
# Сборка и запуск всех сервисов
docker compose up --build -d
# Проверяем логи
docker compose logs -f
В продакшне рекомендуется использовать:
- Gunicorn + Nginx для Django,
- systemd или Docker Compose override для автозапуска Celery,
- отдельные volume для базы данных и статических файлов.
- PostgreSQL (основная БД).
- RabbitMQ (брокер задач для Celery).
- Django‑приложение (web).
- Celery worker (фоновые задачи).
- Django: через WSGI сервер (например, gunicorn) за reverse‑proxy.
- Celery: отдельный процесс/контейнер
celery -A payout_platform worker ....
- Настроить переменные окружения (
DB_*,RABBITMQ_*,SECRET_KEY). - Поднять PostgreSQL и RabbitMQ.
- Выполнить миграции
python manage.py migrate. - Запустить web и worker.