def run(cmd, timeout_sec):
if (sys.version_info >= (3,5)):
try:
completed = subprocess.run(shlex.split(cmd), timeout=timeout_sec, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return completed.stdout.decode('utf-8'), completed.stderr.decode('utf-8')
except subprocess.TimeoutExpired:
message = 'Fitting got killed by timeout after '+str(timeout_sec)+' sec!'
print (message)
raise EslException(message)
else:
proc = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
kill_proc = lambda p: p.kill()
timer = Timer(timeout_sec, kill_proc, [proc])
try:
timer.start()
stdout,stderr = proc.communicate()
finally:
timer.cancel()
if (proc.poll() == -9 ):
raise EslException('Fitting probably got killed by timeout!')
#if (proc.poll() != 0 ):
# raise EslException('Fitting crashed! returned '+str(proc.poll()))
return stdout, stderr
评论列表
文章目录