fastapi-rabbitmq
fastapi-rabbitmq copied to clipboard
Тестовое задание
Требуется реализовать 2 сервиса и связать их через RabbitMq.
Описание первого сервиса:
Представляет из себя REST api, реализованное с помощью FastApi и состоящее из 2-х методов:
Post AddTasks. Принимает на входе json структуру вида:
{
"taskid": "sd1234",
"description": "тестовая задача",
"params": {
"test1": "123",
"test2": "1234"
}
}
Где taskid:str и description:str — обязательные параметры.
Params – словарь вида name:str - value:str.
Метод складывает полученное сообщение в очередь в RabbitMq.
Get GetStats. Возвращает единственное число — количество успешно обработанных вызововAddTasksс момента старта сервиса.
Описание второго сервиса:
Сервис представляет из себя слушателя очереди из первого сервиса.
Вычитывая сообщения он выводит их в stdout.
Сервисы должны быть объединены одним docker-compose файлом, в нем же должен быть запуск контейнера с RabbitMq.
Результат работы должен быть представлен на GitHub. Для запуска должно быть достаточно выполнить:
git clone
docker-compose up --build
Ручной запуск
- Запуск RabbitMQ
- Установка зависимостей
pip install -r requirements.txt - Запуск вебсервера
uvicorn api:app --host 0.0.0.0 --port 80 - Запуск слушателя
python listener.py - Отправка запросов на
http://localhost/AddTasks(POST с телом JSON, подобным примеру выше) иhttp://localhost/GetStats(GET) - Вывод в терминале слушателя.