diff --git a/docker/client.py b/docker/client.py index d8f79c92..38355b09 100644 --- a/docker/client.py +++ b/docker/client.py @@ -233,17 +233,8 @@ class Client(requests.Session): def _stream_helper(self, response): """Generator for data coming from a chunked-encoded HTTP response.""" - socket_fp = self._get_raw_response_socket(response) - socket_fp.setblocking(1) - socket = socket_fp.makefile() - while True: - size = int(socket.readline(), 16) - if size <= 0: - break - data = socket.readline() - if not data: - break - yield data + for line in response.iter_lines(chunk_size=32): + yield line def _multiplexed_buffer_helper(self, response): """A generator of multiplexed data blocks read from a buffered @@ -349,6 +340,9 @@ class Client(requests.Session): else: context = utils.tar(path) + if utils.compare_version('1.8', self._version) >= 0: + stream = True + u = self._url('/build') params = { 't': tag, @@ -372,7 +366,7 @@ class Client(requests.Session): if context is not None: context.close() - if stream or utils.compare_version('1.8', self._version) >= 0: + if stream: return self._stream_helper(response) else: output = self._result(response)