refs #2621: Redo interfaceAdmin to avoid truncating output
parent
84708b7ae1
commit
daff276aa0
|
@ -299,27 +299,50 @@ class ogLiveWorker(ServerWorker):
|
|||
|
||||
sout = serr = ''
|
||||
finished = False
|
||||
while True:
|
||||
try:
|
||||
p.wait (0.05)
|
||||
finished = True
|
||||
except subprocess.TimeoutExpired:
|
||||
pass
|
||||
|
||||
ready_to_read, _, _ = select.select ([p.stdout, p.stderr], [], [], 0.2)
|
||||
out_finished = False
|
||||
err_finished = False
|
||||
|
||||
buf_size = 4096
|
||||
stdout_buf = bytes()
|
||||
stderr_buf = bytes()
|
||||
|
||||
while True:
|
||||
ready_to_read, _, exceptions = select.select ([p.stdout, p.stderr], [], [p.stdout, p.stderr], 0.2)
|
||||
|
||||
if p.stdout in ready_to_read:
|
||||
l = p.stdout.readline()
|
||||
partial = l.decode ('utf-8', 'ignore')
|
||||
if self.stdout_q: self.stdout_q.put (partial)
|
||||
sout += partial
|
||||
data = p.stdout.read(buf_size)
|
||||
stdout_buf = stdout_buf + data
|
||||
|
||||
if len(data) < buf_size:
|
||||
out_finished = True
|
||||
|
||||
if p.stderr in ready_to_read:
|
||||
l = p.stderr.readline()
|
||||
partial = l.decode ('utf-8', 'ignore')
|
||||
serr += partial
|
||||
data = p.stdout.read(buf_size)
|
||||
stderr_buf = stderr_buf + data
|
||||
|
||||
if len(data) < buf_size:
|
||||
err_finished = True
|
||||
|
||||
if p.stdout in exceptions or p.stderr in exceptions:
|
||||
# Error in either socket
|
||||
finished = True
|
||||
|
||||
if out_finished and err_finished:
|
||||
finished = True
|
||||
|
||||
if finished: break
|
||||
sout = sout.strip()
|
||||
serr = serr.strip()
|
||||
|
||||
|
||||
sout = stdout_buf.decode('utf-8', 'ignore').strip()
|
||||
serr = stdout_buf.decode('utf-8', 'ignore').strip()
|
||||
|
||||
try:
|
||||
p.wait (0.1)
|
||||
finished = True
|
||||
except subprocess.TimeoutExpired:
|
||||
pass
|
||||
|
||||
|
||||
## DEBUG
|
||||
logger.debug (f'stdout follows:')
|
||||
|
|
Loading…
Reference in New Issue