diff options
author | Lars Wirzenius <liw@liw.fi> | 2018-01-20 22:38:30 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2018-01-21 20:26:56 +0200 |
commit | 360e840169f38e5cb7a5afa8a4e6ddc272203eee (patch) | |
tree | 0649b885f75b78a6efb1b2894445d74986f6ab11 /worker_manager | |
parent | 9a344103edb6211ca8c16e9fa89dd6a45866308a (diff) | |
download | ick2-360e840169f38e5cb7a5afa8a4e6ddc272203eee.tar.gz |
Fix: flush all buffers, not just first non-empty one
Diffstat (limited to 'worker_manager')
-rwxr-xr-x | worker_manager | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/worker_manager b/worker_manager index 1cc012e..9e16d19 100755 --- a/worker_manager +++ b/worker_manager @@ -19,6 +19,7 @@ import base64 import json import logging import os +import subprocess import tempfile import time @@ -338,8 +339,7 @@ class Runner: exit_code, _, _ = cliapp.runcmd_unchecked( argv, stdout_callback=self.capture_stdout, - stderr_callback=self.capture_stderr, - timeout_callback=self.flush, + stderr=subprocess.STDOUT, **kwargs ) self.flush() @@ -353,18 +353,23 @@ class Runner: return self.capture('stderr', data) def capture(self, stream_name, data): + logging.debug('CAPTURE %s: %r', stream_name, data) self._buffers[stream_name] += data.decode('UTF-8') if len(self._buffers[stream_name]) >= self._maxbuf: self.flush() return None def flush(self): - for stream in self._buffers: + logging.debug('flushing: self._buffers=%r', self._buffers) + streams = list(self._buffers.keys()) + logging.debug('streams: %r', streams) + for stream in streams: buf = self._buffers[stream] + logging.debug('FLUSH: %s: %r', stream, buf) self._buffers[stream] = '' if buf: logging.debug('Posting %d bytes of %s', len(buf), stream) - return self._post(stream, buf) + self._post(stream, buf) class WorkerBase: |