Deribit Price Tracker
Сервис для мониторинга цен (Index Price) btc_usd и eth_usd с биржи Deribit.
Стек технологий
Python 3.11
FastAPI (API Interface)
PostgreSQL + SQLAlchemy Async (Storage)
Celery + Redis (Periodic Tasks)
Docker & Docker Compose (Infrastructure)
GitLab CI/CD (Automation)
Design Decisions (Архитектурные решения)
Асинхронность (AsyncIO): Использован стек FastAPI + aiohttp + asyncpg. Это критично для I/O bound задач (сеть, БД). Воркер Celery работает в синхронном режиме, но внутри вызывает асинхронный цикл asyncio.run(), что позволяет переиспользовать код клиента.
Clean Architecture:
app/main.py: Только HTTP-слой (валидация, роутинг).
app/tasks.py: Бизнес-логика получения данных.
app/db.py: Слой данных (ORM).
Connection Pooling:
В DeribitClient сессия aiohttp создается один раз на цикл опроса, чтобы избежать overhead на установку SSL-соединений.
SQLAlchemy настроена на работу с пулом соединений PostgreSQL.
Инфраструктура: Разделение на микросервисы (Web, Worker, Beat, DB, Redis) через Docker Compose обеспечивает масштабируемость и изоляцию.
Запуск
Локально (через Docker)
docker-compose up --build -d
API доступно по адресу: http://localhost:8000/docs
Тесты
Тесты запускаются автоматически в CI/CD пайплайне, но можно запустить и в контейнере:
docker-compose exec web pytest