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