Асинхронный клиент и API для получения информации о текущем курсе криптовалюты с криптобиржи Deribit.
Проект представляет собой веб-приложение, которое реализует асинхронный клиент для криптобиржи Deribit. Клиент каждую минуту получает актуальные цены на BTC и ETH (индексные цены) и сохраняет их в базе данных. для обработки и предоставления доступа к сохранённым данным реализован REST API на FastAPI.
- Получение текущих цен для BTC и ETH.
- Сохранение цен в базу данных с указанием тикера, цены и времени в формате UNIX timestamp.
- API для работы с сохранёнными данными:
- Получение всех сохранённых данных по указанной валюте.
- Получение последней цены указанной валюты.
- Получение цен с фильтром по дате.
- Python 3.12
- FastAPI
- aiohttp
- SQLAlchemy
- PostgreSQL
- Docker
-
Клонируйте репозиторий и перейдите в папку проекта:
git clone https://github.com/babanlive/Cryptocurrency.git && cd Cryptocurrency
-
Создайте файл
.envв папке приложения (fastapi-application) согласно образцу .env_example. -
Запустите проект через Docker:
-
Для запуска в режиме разработки выполните команду:
docker compose -f docker-compose.yaml up --build
-
Выполните миграции:
docker exec -it app_fastapi poetry run alembic upgrade head
API доступно по адресу:
http://127.0.0.1:8000/api/v1/http://127.0.0.1:8000/docs- GET /prices/tickers — Получение всех сохранённых данных по указанной валюте.
- GET /prices/tickers/latest — Получение последней цены указанной валюты.
- GET /prices/tickers/date — Получение цен указанной валюты с фильтром по дате.
-
Получение всех сохранённых данных для тикера BTC_USD:
curl -X 'GET' \ 'http://127.0.0.1:8000/api/v1/prices/tickers?ticker=BTC_USD' \ -H 'accept: application/json'
-
Получение последней цены для тикера ETH_USD:
curl -X 'GET' \ 'http://127.0.0.1:8000/api/v1/prices/tickers/latest?ticker=ETH_USD' \ -H 'accept: application/json'
-
Получение цен для тикера BTC_USD с фильтром по дате:
curl -X 'GET' \ 'http://127.0.0.1:8000/api/v1/prices/tickers/date?ticker=BTC_USD&date=2024-10-27' \ -H 'accept: application/json'
-
Создайте тестовую БД
docker exec -it pg_db psql -U user -d postgres -c "CREATE DATABASE test_db;"
-
Запустите тесты:
docker exec -it app_fastapi poetry run pytest -v tests/ --disable-warnings