XCanG / fastapi-rabbitmq

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Тестовое задание

Требуется реализовать 2 сервиса и связать их через RabbitMq.

Описание первого сервиса:

Представляет из себя REST api, реализованное с помощью FastApi и состоящее из 2-х методов:

  1. Post AddTasks. Принимает на входе json структуру вида:
{
	"taskid": "sd1234",
	"description": "тестовая задача",
	"params": {
		"test1": "123",
		"test2": "1234"
	}
}

Где taskid:str и description:str — обязательные параметры. Params – словарь вида name:str - value:str.

Метод складывает полученное сообщение в очередь в RabbitMq.

  1. Get GetStats. Возвращает единственное число — количество успешно обработанных вызовов AddTasks с момента старта сервиса.

Описание второго сервиса:

Сервис представляет из себя слушателя очереди из первого сервиса. Вычитывая сообщения он выводит их в stdout.

Сервисы должны быть объединены одним docker-compose файлом, в нем же должен быть запуск контейнера с RabbitMq.

Результат работы должен быть представлен на GitHub. Для запуска должно быть достаточно выполнить:

git clone
docker-compose up --build

Ручной запуск

  1. Запуск RabbitMQ
  2. Установка зависимостей pip install -r requirements.txt
  3. Запуск вебсервера uvicorn api:app --host 0.0.0.0 --port 80
  4. Запуск слушателя python listener.py
  5. Отправка запросов на http://localhost/AddTasks (POST с телом JSON, подобным примеру выше) и http://localhost/GetStats (GET)
  6. Вывод в терминале слушателя.

About


Languages

Language:Python 84.7%Language:Dockerfile 15.3%