Требуется реализовать 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) - Вывод в терминале слушателя.