重置命令输出的超时持续时间



我遇到了一个问题,当运行一个命令非常不规则时,它无法运行。

目前我使用的是超时,但问题是当命令工作时,它需要很长时间才能完成(几分钟(。

理想情况下,如果命令显示出一些生命迹象,我想将超时设置为无穷大,否则保持15秒。

有什么建议吗?

最后,我通过将它封装到python脚本中来解决它。使用

python script.py [your command]

脚本将控制命令是否需要重新运行

import sys
import subprocess
import signal
import time
def handler(signum, frame):
global atm
if (atm<3): # attempt to re-run 2 times
print('re-running')
atm = atm + 1
p.kill()
signal.alarm(0)
time.sleep(15) # not sure that is needed, but just in case
run()
else:
raise OSError("Number of re-run attempts exceeded")
def run(): # run the command which is passed as a parameter to this script
global p
p = subprocess.Popen(args, stdout=subprocess.PIPE)
signal.signal(signal.SIGALRM, handler) # will not work on Windows
signal.alarm(5) # give 5 seconds to produce some output, rerun otherwise

for line in iter(p.stdout.readline, b''):
signal.alarm(0) # if output produced remove the alarm
topr = (line).decode('UTF-8');
print(topr, end='')
args = sys.argv[1::] # command passed here
atm = 0
run()

相关内容

  • 没有找到相关文章

最新更新