Разработать скрипт распараллеливания между серверами

Цена договорная
02 июля 2022, 13:20 • 15 откликов • 130 просмотров
Необходимо разработать скрипт, который должен распараллеливать исполнение массовой задачи сканирования на несколько серверов и контролировать исполнение каждого chunk'а задачи.

Термины
Задача: набор текстовых списков (chunk'ов) для обработки + параметры запуска обработчика.
Обработчик: бинарник, принимащий в качестве параметров один из списков, обрабатывающий его и генерирующий output.
Сервер: vps с ssh доступом, на который загружен бинарник.

Суть
Скрипт должен принять список серверов, проверить их состояние (доступность, наличие бинарника, наличие свободного места на диске, ulimit), поставить все chunk'и в очередь и последовательно раздавать серверам задачи.
Каждый сервер может обрабатывать до X chunk'ов одновременно.
После выполнения каждого chunk'а скрипт должен архивировать output бинарника и скачивать к себе в рабочую директорию.
Если обработчик завис на каком-то из chunk'ов — фиксируем исключение, помечаем chunk как аварийный, забираем output, забираем логи и убиваем обработчик.
Логируем LA каждого сервера, время исполнения каждого chunk'а.
При прерывании и перезапуске управляющего скрипта необходимо продолжать работу над последней задачей.

Среда исполения скрипта: Linux, MacOS
Предпочтительный язык исполнения: go, python

Описание задачи выполняется через конфигурационный файл, содержащий название задачи, список серверов, параметры командной строки для бинарника и пути к текстовым спискам и директории для храннения архивированного output'а.

Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Заказчик
В отличие от первого исполнителя, который не справился с поставленной задачей и сбежал, Алексей всё выполнил по ТЗ, уточнив необходимые моменты. Результат получился на заглядение быстрым и гибким, а архитектура приложения — красивой и удобной для дальнейшего развития. Большое спасибо Алексею за проделанную работу! Будем продолжать сотрудничество.
~ 1 месяц назад
R50 9fcaaa81e45308adcf629fe9582dc203
Фрилансер
 
~ 1 месяц назад