Skip to content

kinnalover/aviata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Микросервис для асинхронного поиска в различных провайдерах

Данный микросервис был реализован на основе FastAPI с использованием базы данных Postgres и ORM SQLAlchemy. Сервис предоставляет HTTP API и принимает/отдает запросы/ответы в формате JSON. Описание методов API

1. POST /provider-a/search Данный метод возвращает данные из файла response_a.json с задержкой в 30 секунд.

2. POST /provider-b/search Данный метод возвращает данные из файла response_b.json с задержкой в 60 секунд.

3. POST /airflow/search Данный метод отправляет запросы на поиск в сервисах provider-a и provider-b и в ответе возвращает уникальный search_id поиска

4. GET /airflow/results/{search_id}/{currency} Данный метод возвращает результаты поиска в провайдерах provider-a и provider-b по уникальному search_id с указанием валюты currency. Результаты поиска накапливаются и сортируются по цене. Ответ также содержит статус поиска PENDING или COMPLETED в зависимости от стадии поиска

А также Курс валют скачивается раз в день в 12:00, также он будет скачан при первом запуске приложения.

Запуск приложения

Скачайте репозиторий на свой компьютер.

Запустите контейнеры с помощью команды: docker-compose up --build Приложение будет запущено на порту 9000. http://localhost:9000/ А также можно вручную запустить при помощи команды: _uvicorn main:app --reload --port 9000 для этого уже подготовлен .env file

Тестирование

Для тестирования используется pytest

Требования

  1. Сервисы должен быть написан на языке Python с использованием любого из веб фреймворков. <Выбран FastAPI>
  2. В качестве хранилища данных можно использовать любую технологию. _<Postgres и SQLAlchemy>_
  3. Сервер должен быть доступен на порту 9000
  4. Предоставить инструкцию по запуску приложения. В идеале (но не обязательно) – использовать контейнеризацию с возможностью запустить проект командой docker-compose up

Будет плюсом

  1. Использование асинхронного фреймворка и кода
  2. Написать тесты (постарайтесь достичь покрытия в 70% и больше)
  3. Если вдруг будет желание, можно сделать простой UI
  4. Вместо файлов response_a.json и response_b.json, распарсить реальные ответы провайдеров из файлов response_a.xml и response_b.xml, результат должен быть идентичным по формату.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published