纯python远程作业调度系统
pscheduler的Python项目详细描述
设置
- 此pscheduler服务非常关键,这取决于远程计算机上共享文件系统的使用情况。为所有远程计算机设置nfs。
- 对所有远程计算机具有相同的登录凭据。
- 像ssh和nohup这样的基本linux实用程序应该安装在所有远程计算机上。
安装
pscheduler是仅限python 3的模块,可以使用pip轻松安装:
^{tt1}$
配置
- 使用pscheduler service start启动服务。这将在主目录下创建目录.pscheduler。
- 编辑文件~/.pscheduler/hosts.cfg并在每行中添加远程计算机的所有IP地址/域别名。保存并退出。或者,如果您在hpc环境中并且已经安装了lsf,则可以使用提供的脚本bhostsWrapper.py直接填充远程计算机。然后,您应该对其进行编辑,以从列表和任何其他所需主机中删除头节点计算机。
- 如果尚未设置远程计算机的无密码登录,请使用提供的脚本batchSetupLoginKeys.py进行设置。
用法
有四种基本实用程序:
service start/stop the background service hosts get information on remote machines sub submit jobs jobs monitor running/pending job See helpfiles of individual subcommands for further details
在提交任何作业之前启动后台服务非常重要
示例:
- Start service: ^{tt2}$
- Submit job: ^{tt6}$
挂起和正在运行的作业配置文件分别存储在挂起和运行目录中的~/.pscheduler/jobs下。默认情况下,包含标准输出(json格式)的已完成作业配置文件存储在~/.pscheduler/jobs/finish下,但用户可以在提交作业和提供输出位置路径时使用-o标志为此文件选择自定义位置。
~/.pscheduler/daemon.log包含后台服务的日志。您应该看看这个文件,看看是否抛出了任何错误消息。
请注意,pscheduler不会忽略其他调度程序的调度,而只是根据资源的可用性(当前只有cpu核数)启动作业。
未来版本的路线图
- 实现jobs子命令
- 在出现资源峰值时重新启动作业
- 改进捕获致命异常的代码
历史
- 0.0.1:
- 首次α前释放
- 0.0.2:
- 使用wrapper.py创建的cli
- bhost wrapper脚本从phosts模块分离出来
- introducted hosts.cfg:用户可编辑的主机列表
- 用于创建登录密钥的批处理脚本
- psub现在以json格式保存
- dev:使用python脚本提交到pypi
- dev:setup.py中版本的自动更新
- 0.0.3:
- 在用于命令行调用的脚本中添加了pscheduler。
- 0.0.4:
- 部署修复程序
- 0.0.5:
- 导入修复程序
- 0.0.6:
- json修复
- 0.0.7:
- 已实现jobs子命令
- 已纠正phosts双主机检查问题
- daemon中改进的提交过程
- 类命名约定已更改
- 默认主机固定为本地主机。创建无密码登录到本地主机
- dev:travis ci现在用于测试
- 0.1.0:
- pdaemon修复程序
- 回滚ssh keygen
贡献者
帕拉沙尔达波拉(parashar.dhapola@gmail.com)