Библиотека Python для планирования заданий, ssh - PullRequest
7 голосов
/ 12 апреля 2011

Я бы хотел найти инструмент пользовательского пространства (желательно на Python - за исключением того, что я мог бы легко изменить, если он уже не делает то, что мне нужно), чтобы заменить короткий скрипт, которым я былиспользуя это, можно сделать две вещи ниже:

  • опрашивает менее 100 компьютеров (Fedora 13, так бывает) на загрузку, доступную память и, если похоже, что кто-то их использует
  • выбирает хорошие хосты для рабочих мест, запускает их через ssh.Эти задания являются выполнением произвольных программ командной строки, которые читают и записывают в общую файловую систему - обычно сценарии обработки изображений или аналогичные - процессоры, иногда требующие большого объема памяти.

Например, используя мой текущий сценарий,Я могу в командной строке Python

>>> import hosts
>>> hosts.run_commands(['users']*5)

или из командной строки

% hosts.py "users" "users" "users" "users" "users"

выполнить команду users 5 раз (после нахождения 5 компьютеров, на которых эта команда может быть запущена)проверяя загрузку процессора и доступную память как минимум на 5 компьютерах из файла конфигурации).Не должно быть никакого сервера заданий, кроме только что выполненного мной сценария, и не должно быть рабочих демонов или процессов на компьютерах, которые будут выполнять эти команды.

Я бы также хотел иметь возможность отслеживать задания, запускать заданияснова при сбое и т. д., но это дополнительные функции (очень стандартные в реальном планировщике заданий), которые мне на самом деле не нужны.

Я нашел хорошие библиотеки ssh для Python, такие как classh и PuSSH , которые не имеют (очень простых) функций балансировки нагрузки, которые мне бы хотелось.С другой стороны, что я хочу, это Кондор или Слёрм, как предложили Криспамар, прежде чем я пояснил, что хочу чего-то более легкого.Они будут делать вещи должным образом, но, читая о них, они звучат как раскручивание их в пространстве пользователя только тогда, когда они мне нужны, это раздражает до невозможности.Это не выделенный кластер, и у меня нет корневого доступа на этих хостах.

В настоящее время я планирую использовать оболочку вокруг classh для некоторых базовых опросов компьютеров всякий раз, когда мне нужно узнать, насколько занятони, если я не могу найти что-то еще.

Ответы [ 6 ]

3 голосов
/ 27 ноября 2012

Есть ткань , я удивлен, никто об этом не упомянул.

2 голосов
/ 12 апреля 2011

Slurm - это мощный планировщик заданий, который можно программировать на Python с использованием PySlurm .

Не знаю, сложнее ли это, чем Кондор, развернуть. Также я не знаю, подходит ли он всем вашим потребностям, но на всякий случай записываю.

1 голос
/ 19 марта 2014

Возможно, я немного опоздал: я бы посоветовал взглянуть на Python Saga здесь.

1 голос
/ 22 декабря 2011

Посмотрите на func .Я не использовал его выше уровня «Привет, мир», но я думаю, что он идеально подходит для вас.

1 голос
/ 12 апреля 2011

Вы могли бы изменить buildbot и Twisted? Это похоже на хороший путь.

0 голосов
/ 01 сентября 2015

Возможно, я опоздал на этот вопрос, но недавно столкнулся с той же проблемой, и я ищу библиотеку C / C +, где я могу планировать работу и балансировать нагрузку на сервер для обработки файлов изображений на кластере серверов.Я буду вызывать библиотеку из графического интерфейса и следить за состоянием заданий.

Я установил slurm и попробовал команды, однако использовать его как инструмент и, возможно, как библиотеку кажется довольно сложным.Другие опции, как представляется, обеспечивают планирование заданий, но не обеспечивают балансировку нагрузки на основе использования ЦП.Буду признателен за любые предложения.

С наилучшими пожеланиями

...