Skip to content

Latest commit

 

History

History
54 lines (28 loc) · 1.86 KB

File metadata and controls

54 lines (28 loc) · 1.86 KB

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