-
Notifications
You must be signed in to change notification settings - Fork 0
JOB 模块
执行一条命令,需要登录 , 异步执行
POST : {"command" : "COMMAND LINE " }
返回值 :
{u'status': u'调用状态', u'output': u'*', u'status_code': 状态码, u'error': u'出错信息'}
成功返回时 : {u'status': u'OK', u'output': {u'output': u'程序output', u'retcode': 程序退出码, u'error': u'错误输出'}, u'status_code': 200, u'error': u''}
返回结果示例 :
{u'status': u'OK', u'output': {u'output': u'', u'retcode': 1, u'error': u"touch: cannot touch `/root/a': Permission denied\n"}, u'status_code': 200, u'error': u''}
{u'status': u'OK', u'output': {u'output': u'', u'retcode': 2, u'error': u'ls: cannot open directory /root: Permission denied\n'}, u'status_code': 200, u'error': u''}
获取状态信息 , 尚未实现
结果类似 : { ‘ln3’ : { 'queue' : { 'PD': 1, 'R' : 1111, 'time' : 4 , 'health' : 0.8 , } , 'info' : { 'work' : { 'idle' : 22 , 'alloc' : '333' } } } }
实现 , 为保障GET 的效率 , WS 直接从 REDIS 数据库中读取数据 , 不同的worker 上运行不同的监控进程不停的执行测试程序往 REDIS 中写数据。这样既能保障API 的效率又能保障性能的及时可靠。 信息可附带时间戳以保障监管系统出错未工作时WS 可以探知到 。
提交作业,需要登录,异步执行
POST : {"jobscript" : 作业脚本内容 , "jobfilepath" : 作业脚本路径 , 'jobconf' : 作业参数 } 或 POST : { "jobfile" : 已经存在的作业脚本路径 , 'jobconf' : 作业参数 }
即如果已经上传了作业脚本,可以直接通过 "jobfile" 指定 , 否则则通过 jobscript 指定内容,通过 jobfilepath 指定生成路径, 如果不指定则会在 ~/newt 下创建 。
如果是新的 作业脚本内容 ,可以在 jobscript 中提供, 并通过 jobfilepath 指定创建脚本文件的位置 。
jobconf 是作业的控制参数,可以不提供或以json格式只提供需要的,可提供的参数如下 :
- "job_wdir" , 工作路径
- "job_name" , 作业名称
- "time_limit" , 执行时间限制(min)
- "partition" , 作业分区
- "scale_cores" , 需要多少核
- "scale_memGB" , 需要多少内存
- "scale_Nodes" , 需要多少节点
- "jobfile_args", 作业脚本附加参数 一个提交例子如下:
mc.open("/job/" + machine_name + '/' , data = {"jobscript" : test_batchstr , "jobfilepath" : '/HOME/%s/project/testjob/job.sh' % login_data["username"] , 'jobconf' : json.dumps({ 'job_name' : 'hello' , 'time_limit' : 10 }) } )
返回值 :
成功提交返回如下 :
{u'status': u'OK', u'output': {u'jobid': u'4816214'}, u'status_code': 200, u'error': u''}
可以从output 中获取成功提交后作业系统分配的jobid .
获取当前自己的作业队列的信息,需要登录,异步执行
已经结束的作业无法从此获得信息。
成功返回结果如下:
{u'status': u'OK', u'output': {u'status': {u'4816213': u'Pending', u'4816214': u'Pending'}, u'nodelist': {u'4816213': u'(Priority)', u'4816214': u'(Priority)'}, u'name': {u'4816213': u'job.sh', u'4816214': u'hello'}, u'partition': {u'4816213': u'work', u'4816214': u'work'}, u'user': {u'4816213': u'sysu_hpc_dwu_1', u'4816214': u'sysu_hpc_dwu_1'}, u'time': {u'4816213': u'0:00', u'4816214': u'0:00'}, u'nodes': {u'4816213': 2, u'4816214': 2}, u'id': {u'4816213': u'4816213', u'4816214': u'4816214'}}, u'status_code': 200, u'error': u''}
获取当前自己的指定作业的信息,需要登录,异步执行
成功返回结果如下:
{u'status': u'OK', u'output': {u'status': {u'4816216': u'Pending'}, u'tasks': {u'4816216': u''}, u'name': {u'4816216': u'newt_k8lm3_pc'}, u'partition': {u'4816216': u'work'}, u'time': {u'4816216': u'00:00:00'}, u'nodes': {u'4816216': 2.0}, u'id': {u'4816216': u'4816216'}, u'exitcode': {u'4816216': u'0:0'}}, u'status_code': 200, u'error': u''}
一个作业可能会有多个作业步,这里可以看到作业步的信息。
杀掉某个作业,需要登录,异步执行
成功返回:
{u'status': u'OK', u'output': u'', u'status_code': 200, u'error': u''}