用于作业调度和SSH的Python库
我想找一个用户空间的工具(最好是用Python写的,如果没有,那就找一个我能轻松修改的工具)来替代我现在用的一个小脚本,这个脚本主要做两件事:
- 监控不到100台电脑(恰好是Fedora 13)以获取它们的负载、可用内存,以及是否有人在使用它们
- 选择合适的主机来执行任务,通过ssh运行这些任务。这些任务是执行一些可以读写共享文件系统的命令行程序,通常是图像处理脚本或类似的,可能会消耗很多CPU和内存。
举个例子,使用我现在的脚本,我可以在Python提示符下
>>> import hosts
>>> hosts.run_commands(['users']*5)
或者在命令行中
% hosts.py "users" "users" "users" "users" "users"
运行命令users
五次(在检查了至少5台电脑的CPU负载和可用内存后,从配置文件中找到可以运行这个命令的5台电脑)。除了我刚刚运行的脚本外,不应该有其他的任务服务器,也不应该在这些电脑上有任何工作进程。
我还希望能够跟踪这些任务,遇到失败时重新运行等,但这些都是额外的功能(在真正的任务调度器中很常见),其实我并不需要。
我找到了一些不错的Python ssh库,比如classh和PuSSH,但它们没有我想要的(非常简单的)负载均衡功能。另一方面,像Condor或Slurm这样的工具,正如crispamares之前提到的,但我想要的是更轻量级的东西。虽然这些工具做事情的方式是正确的,但根据我的了解,在我需要的时候在用户空间启动它们会很麻烦,甚至几乎不可能。这不是一个专用的集群,而且我在这些主机上没有root权限。
目前我打算在classh的基础上做一个包装,随时监控电脑的忙碌情况,如果找不到其他合适的工具就用这个。