From ee820f48b52dec015e752950cb03af7fe5214632 Mon Sep 17 00:00:00 2001 From: Aleksei Proskuriakov Date: Fri, 8 Dec 2023 19:55:53 +0300 Subject: [PATCH] Update README.md --- README.md | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 29f80e7..2a34d2d 100644 --- a/README.md +++ b/README.md @@ -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-контейнерах. + [⬆️Оглавление](#оглавление) @@ -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. Основной блок - прототип социальной сети: Неавторизованные пользователи могут получать доступ на чтение либо ко всем постам, либо к конкретному посту. @@ -83,6 +85,13 @@ Swagger позволяет осуществлять http-запросы к ра Если данные были введены правильно, и таблица в БД существует — появится окно с подтверждением авторизации, нажмите `Close`. Чтобы разлогиниться — перезагрузите страницу. +Swagger позволяет осуществлять http-запросы к работающему сервису, тем самым можно управлять постами в рамках политики сервиса (указано в Swagger для каждого запроса). +

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