Тестовое задание на вакансию Python-разработчик в Инвиан.
Загрузите исходный код проекта на свое устройство с помощью следующей команды:
git clone https://github.com/EveryoneHATEme/test_invian
Соберите проект, введя в корневой директории репозитория следующую команду в консоль:
docker compose build
Запустите образ docker с помощью следующей команды:
docker compose up
- Реализовать компоненты архитектуры, изображенной на диаграмме используя Python 3, допускается использование любых библиотек/фреймворков/инструментов.
- Обеспечить взаимодействие компонент друг с другом.
- Создать docker-compose конфигурацию для запуска.
- Создать документацию по запуску системы.
- Создать репозиторий в GitHub с результатами прошлых пунктов.
Генерирует данные, на основе которых контроллер принимает решение. Всего 8 сенсоров, каждый генерирует 300 сообщений в секунду, сообщения равномерно распределены по секунде и отправляются раздельно (один запрос на одно сообщение). Алгоритм генерации данных на усмотрение.
Управляет манипулятором по TCP соединению, на основе данных от сенсоров. Алгоритм принятия решения о статусе на усмотрение, но должен использовать данные с сенсоров.
API контроллера должен соответствовать REST API.
Обработка данных с сенсоров происходит параллельно/асинхронно, однако важно обрабатывать сообщения в интервалы 5 секунд. Т. е. каждые 5 секунд принимается решение об управляющем сигнале для манипулятора.
Устаревшая информация не должна приниматься во внимание при принятии решения. Сообщение считается устаревшим, если информация из этого сообщения имеет время создания раньше принятия последнего решения об управляющем сигнале.
Контроллер должен уметь через API отдавать список отправленных управляющих сигналов за указанный интервал времени.
Принимает сигналы по TCP соединению и выводит их в консоль/логи для демонстрации.