抱歉,我无法更好地构建标题。让我解释一下我要做的事情。
我有一份工作对象列表。每个作业对象都有一个 monitor 函数,该函数使用subprocess.run调用命令并更新对象的状态(在类中定义的实例变量)。
示例:
def start_monitoring(self):
self.logger.info('Starting to monitor all the jobs.')
for job in self.running_jobs_list:
job.monitor()
工作班:
class Job(object):
def __init__(self):
self._status = None
def monitor(self):
command = self.render() # returns a command when executed gets a status of the job
command_results = None
command_results = subprocess.run(args=[command], shell=True, universal_newlines=True, check=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
self._status = command_results.stdout.strip()
作业的状态可以是“DONE”,“PEND”或“EXIT”之一。
我希望每隔1分钟继续监控 running_jobs_list 中的作业,直到 running_jobs_list 中的所有作业对象都已完成或退出
因此,如果状态为PEND,我希望在1分钟后再次监控。
最好的方法是什么?我有一个想法是做这样的事情:
#Pseudo code
While len(self.running_jobs_list) != 0:
start_monitoring()
sleep(1 min)
# Inside start_monitoring delete a job from the array if its status is DONE or EXIT