本文整理汇总了Python中pandatools.Client.retryTask方法的典型用法代码示例。如果您正苦于以下问题:Python Client.retryTask方法的具体用法?Python Client.retryTask怎么用?Python Client.retryTask使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pandatools.Client
的用法示例。
在下文中一共展示了Client.retryTask方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: master_resubmit
# 需要导入模块: from pandatools import Client [as 别名]
# 或者: from pandatools.Client import retryTask [as 别名]
def master_resubmit(self,jobs):
'''Resubmit failed Jedi job'''
from pandatools import Client
jobIDs = {}
for job in jobs:
jobIDs[job.backend.id] = job
allJobIDs = jobIDs.keys()
pandaJobIDs = {}
for jID in allJobIDs:
with inject_proxy(self.credential_requirements):
status, jediTaskDict = Client.getJediTaskDetails({'jediTaskID': jID},False,True,verbose=False)
if status != 0:
logger.error("Failed to get task details for %s" % jID)
raise BackendError('Jedi','Return code %d retrieving job status information.' % status)
# Retrieve job
job = jobIDs[jediTaskDict['jediTaskID']]
newJobsetID = -1 # get jobset
retryJobs = [] # jspecs
resubmittedJobs = [] # ganga jobs
if jediTaskDict['status'] in ['failed', 'killed', 'cancelled', 'aborted', 'broken', 'finished' ]:
retryJobs.append(job)
resubmittedJobs.append(jID)
#elif jediTaskDict['status'] == 'finished':
# pass
else:
logger.warning("Cannot resubmit. Jedi task %s is status %s." %(jID, jediTaskDict['status'] ))
return False
# submit
if len(retryJobs)==0:
logger.warning("No failed jobs to resubmit")
return False
with inject_proxy(self.credential_requirements):
status,out = Client.retryTask(jID, verbose=False)
if status != 0:
logger.error(status)
logger.error(out)
logger.error("Failed to retry JobID=%s" % jID)
return False
tmpStat,tmpDiag = out
if not tmpStat:
logger.error(tmpDiag)
logger.error("Failed to retry JobID=%s" % jID)
return False
logger.info(tmpDiag)
job.backend.status = None
job.backend.jobSpec = {}
job.updateStatus('submitted')
logger.info('Resubmission successful')
return True
示例2: retry
# 需要导入模块: from pandatools import Client [as 别名]
# 或者: from pandatools.Client import retryTask [as 别名]
def retry(self,JobsetID,newSite=False,newOpts={},noSubmit=False,ignoreDuplication=False,useJobsetID=False,retryBuild=False,reproduceFiles=[],unsetRetryID=False):
# get logger
tmpLog = PLogger.getPandaLogger()
# check proxy
self.gridPassPhrase,self.vomsFQAN = PsubUtils.checkGridProxy(
self.gridPassPhrase,
False,
self.verbose,
useCache=True)
# force update just in case
self.status(JobsetID,True)
# set an empty map since mutable default value is used
if newOpts == {}:
newOpts = {}
# get jobset
newJobsetID = -1
jobList = self.getJobIDsWithSetID(JobsetID)
if jobList == None:
# works only for jobsetID
if useJobsetID:
return
# works with jobID
isJobset = False
jobList = [JobsetID]
else:
isJobset = True
tmpMsg = "ID=%s is composed of JobID=" % JobsetID
for tmpJobID in jobList:
tmpMsg += '%s,' % tmpJobID
tmpMsg = tmpMsg[:-1]
tmpLog.info(tmpMsg)
for JobID in jobList:
# get job info from local repository
localJob = self.getJobInfo(JobID)
if localJob == None:
tmpLog.warning("JobID=%s not found in local repository. Synchronization may be needed" % JobID)
return None
# for JEDI
if localJob.isJEDI():
status,out = Client.retryTask(
localJob.jediTaskID,
verbose=self.verbose,
properErrorCode=True,
newParams=newOpts)
if status != 0:
tmpLog.error(status)
tmpLog.error(out)
tmpLog.error("Failed to retry TaskID=%s" % localJob.jediTaskID)
return False
tmpStat,tmpDiag = out
if (not tmpStat in [0,True] and newOpts == {}) or (newOpts != {} and tmpStat != 3):
tmpLog.error(tmpDiag)
tmpLog.error("Failed to retry TaskID=%s" % localJob.jediTaskID)
return False
tmpLog.info(tmpDiag)
continue
# skip running job
if localJob.dbStatus != 'frozen':
tmpLog.info('Retry failed subjobs in running jobId=%s' % JobID)
status,out = Client.retryFailedJobsInActive(JobID,verbose=self.verbose)
if status != 0:
tmpLog.error(status)
tmpLog.error(out)
tmpLog.error("Failed to retry JobID=%s" % JobID)
else:
job = self.status(JobID)
if isJobset:
continue
else:
return
# skip already retried
if localJob.retryID != '0':
if isJobset:
tmpLog.info('Skip JobID=%s since already retried by JobID=%s JobsetID=%s' % \
(JobID,localJob.retryID,localJob.retryJobsetID))
continue
else:
tmpLog.warning('This job was already retried by JobID=%s' % localJob.retryID)
return
# check status of buildJob
if not retryBuild and not localJob.buildStatus in ['','finished']:
tmpMsgStr = 'Cannot retry since status of buildJob %s is %s (!= finished). ' \
% (localJob.PandaID.split(',')[0],localJob.buildStatus)
tmpMsgStr += 'Please execute %s with the same input/output datasets (or containers). ' % localJob.jobType
tmpMsgStr += 'It will run only on failed/cancelled/unused input files '
tmpMsgStr += 'and append output files to the output dataset container. '
tmpMsgStr += 'Or you may set retryBuild=True in pbook.retry() '
tmpLog.warning(tmpMsgStr)
if isJobset:
continue
else:
return
# check opts for newSite
if newSite or newOpts != {}:
if not localJob.outDS.endswith('/') and not newOpts.has_key('outDS') and not newOpts.has_key('--outDS'):
tmpLog.warning('You need to specify --outDS in newOpts to retry at new site unless container is used as output')
return
# get list of failed jobs
pandaIDs = localJob.PandaID.split(',')
statusList= localJob.jobStatus.split(',')
#.........这里部分代码省略.........