使用DRMAA接口到Grid之子,我希望获得运行特定作业的主机的名称。我想要下面这样的内容(使用drmaa-python接口)
>>> import drmaa
>>> s = drmaa.Session()
>>> s.initialize()
>>> jt = s.createJobTemplate()
>>> jt.remoteCommand = 'sleep'
>>> jt.args = ['100']
>>> jobid = s.runJob(jt)
>>> jobid
'1'
>>> s.jobStatus(jobid)
'running'
>>> s.the_function_I_want(jobid)
'worker-host-123'问题
发布于 2017-03-01 21:33:34
简短的回答:你是对的,这是不可能的。
较长的答覆:
drmaa-python库充当DRMAAv1 API的底层C实现的包装器(参见https://www.ogf.org/documents/GFD.130.pdf)。这样的C库通常与集群框架一起使用。DRMAAv1不支持对作业的标准化监视,因此DRMAAv1 C和DRMAAv1库都无法获得这些信息。
如果您想知道缺乏功能,请注意,最初的API设计是从2004年开始的。
第二个版本的DRMAA (https://www.ogf.org/documents/GFD.231.pdf)确实支持监视。在编写本文时,惟一已知的实现是Univa GridEngine,而且它没有现有的Python实现。
您可以尝试自己解析作业日志文件,以提取执行主机名。如果需要将获取此类文件的特殊选项传递给qsub,则可以在作业模板中使用nativeSpecification字段。
https://stackoverflow.com/questions/40023959
复制相似问题