Тестовое задание на позицию "Junior/Middle Backend Developer (Python)"
Создать backend часть, состоящую из нескольких сервисов:
- Сервер очередей
rabbitmq
http api
:- Реализовать эндпоинт
/queue_reverse_text
- В качестве параметра должен быть произвольный текст.
- Обработка заключается в том, что запрос попадает в персистентную очередь rabbitmq.
- Реализовать можно на любом python http asyncio фреймворке (например aiohttp, fastapi).
- Реализовать эндпоинт
background worker
:- Читает очередь заданий в rabbitmq, выполняет их обработку переворачивая текст и сохраняет результат.
- Реализовать на python
web socket api
- Реализовать эндпоинт
/listen_results
- Клиент по этому эндпоинту может подключиться и пассивно получать результаты обработки задач по мере их получения.
- Реализовать можно на любом python websocket asyncio фреймворке.
- Реализовать эндпоинт
Сервисы релизовать как docker контейнеры.
- Разворачиваем сервисы локально на машине.
- Скриптом подключаемся к эндпоинту
/listen_results
websocket api (например, скриптомlisten_results.py
) - С помощью другого небольшого скрипта создаем запросы на
/queue_reverse_text
(например, скриптqueue_reverse_text.py
) - Смотрим, что в командной строке
listen_results.py
, появляются результаты по мере того, как мы используемqueue_reverse_text.py
- Ввели в командной строке:
queue_reverse_text.py 123
- В командной строке
listen_results.py
появилось:input: 123, output: 321