用于作业调度的Python库,ssh

时间:2011-04-12 14:01:10

标签: python ssh batch-processing job-scheduling condor

我想找一个用户空间工具(最好是在Python中 - 除非我可以很容易地修改它,如果它还没有做我需要的东西)来替换我曾经做过的短脚本使用它可以完成以下两件事:

  • 调查少于100台计算机(Fedora 13,它会发生这种情况)的负载,可用内存,如果看起来有人正在使用它们
  • 为作业选择好的主机,通过ssh运行这些作业。这些作业是执行任意命令行程序,这些程序读取和写入共享文件系统 - 通常是图像处理脚本或类似程序 - cpu,有时是内存密集型任务。

例如,使用我当前的脚本,我可以在python提示符

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

或从命令行

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

运行命令users 5次(通过检查配置文件中至少5台计算机上的cpu负载和可用内存,找到可以运行命令的5台计算机)。除了我刚刚运行的脚本之外,应该没有作业服务器,并且在运行这些命令的计算机上没有工作人员守护程序或进程。

我还希望能够跟踪作业,在失败时再次运行作业等,但这些是我实际上并不需要的额外功能(在实际作业调度程序中非常标准)。

我找到了适合Python的好的ssh库,比如classhPuSSH,它们没有我想要的(非常简单的)负载均衡功能。在我想要的另一边是Condor或Slurm,正如我在澄清之前所说的那样,我想要更轻松的东西。那些会以正确的方式做事,但是通过阅读它们,它们听起来就像在用户空间中将它们旋转起来只有在我需要它们时才会让人烦恼。这不是专用群集,我在这些主机上没有root访问权限。

我正在计划使用一个包装器周围的包装器,当我需要知道如果我找不到别的东西时,我们需要知道他们有多忙。

6 个答案:

答案 0 :(得分:3)

fabric,我很惊讶没人提到它。

答案 1 :(得分:2)

Slurm是一个功能强大的作业调度程序,可以使用PySlurm在Python中编程。

我不知道它是否比Condor更难部署。此外,我不知道它是否符合您的所有需求,但为了以防万一,我将其写下来。

答案 2 :(得分:1)

你可以修改buildbot并扭曲吗?这似乎是一个很好的方式。

答案 3 :(得分:1)

看看func。我没有在“Hello,world”级别之外使用它,但我认为它非常适合你。

答案 4 :(得分:1)

我可能会有点迟到:我想在这里推荐一下python saga

答案 5 :(得分:0)

我可能会迟到这个问题,但我最近遇到了同样的问题,我正在寻找一个C / C +库,我可以在那里进行作业调度和服务器负载平衡,以便在服务器集群上处理图像文件。我将从GUI调用库并监视作业的状态。

我安装了slurm并尝试了命令,但是将其用作工具并且可能作为库看起来相当困难。其他选项似乎提供作业调度,但没有基于CPU利用率的负载平衡。我很感激任何建议。

最好的问候