Разработать скрипт распараллеливания между серверами
Термины
Задача: набор текстовых списков (chunk'ов) для обработки + параметры запуска обработчика.
Обработчик: бинарник, принимащий в качестве параметров один из списков, обрабатывающий его и генерирующий output.
Сервер: vps с ssh доступом, на который загружен бинарник.
Суть
Скрипт должен принять список серверов, проверить их состояние (доступность, наличие бинарника, наличие свободного места на диске, ulimit), поставить все chunk'и в очередь и последовательно раздавать серверам задачи.
Каждый сервер может обрабатывать до X chunk'ов одновременно.
После выполнения каждого chunk'а скрипт должен архивировать output бинарника и скачивать к себе в рабочую директорию.
Если обработчик завис на каком-то из chunk'ов — фиксируем исключение, помечаем chunk как аварийный, забираем output, забираем логи и убиваем обработчик.
Логируем LA каждого сервера, время исполнения каждого chunk'а.
При прерывании и перезапуске управляющего скрипта необходимо продолжать работу над последней задачей.
Среда исполения скрипта: Linux, MacOS
Предпочтительный язык исполнения: go, python
Описание задачи выполняется через конфигурационный файл, содержащий название задачи, список серверов, параметры командной строки для бинарника и пути к текстовым спискам и директории для храннения архивированного output'а.