IBackend文档解析

类图:

IBackend类图

文档解析:

1.setup(self)

  • Ganga.core服务启动时由每个作业调用的一个钩子。在监测子系统enabled之前调用。可以被backend用来进行一些特殊的setup(比如远程backned的ssh传输管道)

2.master_submit(self,rjobs,subjobconfigs,masterjobconfig,keep_going=false)

  • 提交主作业和所有子作业
  • masterjobconfig是共享的,单独的subjob配置在subjobconfig中定义
  • 单个作业(无split的提交也通过本方法执行。在这种情况下subjobconfig只包含一个元素——作业本身。
  • 默认实现是调用每个单独作业的submit()方法
  • 如果任何子作业fails则整个过程被忽略并抛出一个IncompleteSubmissionError
  • 子作业已经submit的保持submitted
  • 默认实现不处理masterjobconfig(因此子类中一般可以重写本方法)
  • 在IBackend_submit()中keep_going是可选的,用以允许不支持keep_going=True的backend实现,这些backend在某些情况下可能要调用IBackend.master_submit()来工作,这样就不需要重写本方法。很多情况中该参数并不重要,因此由开发维护人员决定是否启用对该参数的支持。

3.submit(self,subjobconfig,master_input_sandbox)

  • 提交一个单独的作业。成功返回1
  • master_input_sandbox是一个列表,内容为所有子作业共享的文件名单
  • 不直接由框架调用,只被master_submit()方法的默认实现调用。因此如果master_submit()可以实现对单作业的提交,则本方法是多余的。
  • 4.0.x后的变化
    • subjobconfig与老接口的jobconfig等效
    • jobid已经废弃将移除

4.master_prepare(self,masterjobconfig)

  • 准备主作业(共享的沙盒文件)。由master_submit()调用三次。沙盒根据self._packed_input_sandbox标志(一个类属性)产生

5.master_auto_resubmit(self,rjobs)

  • 一个钩子,在有人想重写自动resubmit行为时可以使用。否则等效于普通的resubmit。

6.master_resubmit(self,rjobs,backend=None)

  • resubmit(状态是submitted的)作业。
  • 配置phase会跳过。
  • 默认的实现是一个等效bulk的操作
  • 如果重写,要保证在主作业上调用过updateMasterJobstatus(),以使主作业能监控循环上被监控。

7.master_kill(self)

  • kill作业和所有子作业。成功返回1.
  • 默认的实现是使用kill()方法并在所有子作业上仿照bulk操作
  • 在有failure的情况下依然会尽可能多的kill掉子作业。
  • 若操作未完成则抛出IncompleteKillError()异常

8.kill(self)

  • kill作业(和所有子作业)
  • 从不会由框架调用。只会被默认的master_kill()调用。

9.peek(self,filename='',command='')

  • 允许查看作业在backend上的输出文件
  • 由command命令查看filename文件

10.remove(self)

  • 主要用于远程(ssh)backend.当作业被移除的时候这个backend方法被调用。

11.master_updateMonitoringInformation(jobs)

  • 静态方法
  • 更新作业的监控信息:
    • 在Backendk需要监控的作业列表(包括状态为submitted和running的作业)
    • 上述作业列表中不包含子作业
  • 默认实现是叠代遍历子作业并执行updateMonitoringInformation()

12.updateMonitoringInformation(jobs)

  • 静态方法
  • 更新单作业的监控信息。这个作业是指一个作业列表,可包含子作业和无分片作业
  • 框架中不会直接调用。可能仅由master_updateMonitoringInformation()默认实现来调用。

13.timedetails(self)

  • 返回所有可用的backend指定的时间戳

14.getStateTime(self,status)

  • 在作业转变到running和completed状态时取得时间戳

15.check_auto_resubmit(self)

  • 一个钩子,用于检查作业是否能自动resubmitted.

Comments !

blogroll

social