Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
alexpro2022 committed Dec 8, 2023
2 parents 9a5a3df + ee820f4 commit c1fbb7b
Showing 1 changed file with 17 additions and 8 deletions.
25 changes: 17 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,14 @@
[![Pytest-asyncio](https://img.shields.io/badge/-Pytest--asyncio-464646?logo=Pytest-asyncio)](https://pypi.org/project/pytest-asyncio/)
[![pre-commit](https://img.shields.io/badge/-pre--commit-464646?logo=pre-commit)](https://pre-commit.com/)

Асинхронный проект и асинхронный клиент к внешнему API реализованы с использованием FastAPI и httpx. Асинхронный клиент периодически запускается в фоновой задаче, реализованной на Celery и RabbitMQ. Посмотреть процесс выполнения и результаты фоновых задач можно через удобный интерфейс Flower.

В качестве базы данных используется PostgreSQL + asyncpg драйвер для асинхронных запросов к БД. Кеширование данных реализовано с помощью асинхронной библиотеки aioredis (является официальной частью библиотеки redis-py). Кеширование запускается в background_tasks FastApi для ускорения выдачи ответа пользователю. В качестве ORM используется SQLAlchemy + Alembic для миграций БД.

Асинхронные тесты реализованы с использованием httpx, pytest и плагина pytest-asyncio.

Приложение и тесты могут быть запущены в Docker-контейнерах.

[⬆️Оглавление](#оглавление)

</details>
Expand All @@ -50,15 +58,9 @@

## Описание работы

Приложение состоит из:

1. Асинхронного httpx-клиента для криптобиржи Deribit:

через определенный интервал времени (задается пользователем) httpx-клиент забирает с биржи текущую цену BTC и ETH и логирует тикер валюты, текущую цену и время в UNIX (данные можно посмотреть по ссылке http://127.0.0.1:5555/tasks). Асинхронный клиент работает по протоколу HTTP/2 в фоновой периодической celery-задаче.
FastAPI-шаблон состоит из основного блока (реализован стандартный CRUD на основе паттерна репозиторий - поэтому легко подключается любая бизнес-логика) и клиента для обращения к внешнему API с возможностью интеграции полученных данных в бизнес-логику основного блока.

2. Социальной сети:

Swagger позволяет осуществлять http-запросы к работающему сервису, тем самым можно управлять постами в рамках политики сервиса (указано в Swagger для каждого запроса).
1. Основной блок - прототип социальной сети:

Неавторизованные пользователи могут получать доступ на чтение либо ко всем постам, либо к конкретному посту.

Expand All @@ -83,6 +85,13 @@ Swagger позволяет осуществлять http-запросы к ра
Если данные были введены правильно, и таблица в БД существует — появится окно с подтверждением авторизации, нажмите `Close`.
Чтобы разлогиниться — перезагрузите страницу.

Swagger позволяет осуществлять http-запросы к работающему сервису, тем самым можно управлять постами в рамках политики сервиса (указано в Swagger для каждого запроса).
<h1></h1>

2. Асинхронный httpx-клиент для криптобиржи Deribit:

через определенный интервал времени (задается пользователем, по умолчанию 15 сек) httpx-клиент забирает с биржи текущую цену BTC и ETH и логирует тикер валюты, текущую цену и время в UNIX (данные можно посмотреть по ссылке http://127.0.0.1:5555/tasks). Асинхронный клиент работает по протоколу HTTP/2 в фоновой периодической celery-задаче.

[⬆️Оглавление](#оглавление)

<br>
Expand Down

0 comments on commit c1fbb7b

Please sign in to comment.