python代码片段——不断尝试执行cmd

来源:互联网 发布:pkpm建筑设计软件 编辑:程序博客网 时间:2024/06/05 07:12
"""cmd: 命令tries: 尝试次数timeout: 每一次尝试执行时的时间长度interval: 每一次尝试执行间的时间间隔"""
  @staticmethod  def execute_shell(cmd, tries=1, timeout=10, interval=10):    index = 0    errorContent = ""    while True:      if(index >= tries):        raise Exception(-1,"[{0}] try {1} times still fail:{2}".format(cmd,tries,errorContent))      if timeout:        end_time = datetime.datetime.now() + datetime.timedelta(seconds=timeout)      sub = subprocess.Popen(cmd, stdout=subprocess.PIPE,stderr=subprocess.PIPE, stdin=subprocess.PIPE,shell=True)      while sub.poll() is None:        time.sleep(0.1)        if timeout:          if end_time <= datetime.datetime.now():            Toolkit.kill_child_processes(sub.pid)      stdout,stderr = sub.communicate()      if sub.returncode == 0:        return sub.returncode,stdout      else:        errorContent = stderr        time.sleep(interval)      index += 1
0 0
原创粉丝点击