mirror of https://github.com/docker/docker-py.git
Merge pull request #184 from ibuildthecloud/fix-chunking
Use Requests.iter_lines to fix #176
This commit is contained in:
commit
7e105f5727
|
@ -233,17 +233,8 @@ class Client(requests.Session):
|
||||||
|
|
||||||
def _stream_helper(self, response):
|
def _stream_helper(self, response):
|
||||||
"""Generator for data coming from a chunked-encoded HTTP response."""
|
"""Generator for data coming from a chunked-encoded HTTP response."""
|
||||||
socket_fp = self._get_raw_response_socket(response)
|
for line in response.iter_lines(chunk_size=32):
|
||||||
socket_fp.setblocking(1)
|
yield line
|
||||||
socket = socket_fp.makefile()
|
|
||||||
while True:
|
|
||||||
size = int(socket.readline(), 16)
|
|
||||||
if size <= 0:
|
|
||||||
break
|
|
||||||
data = socket.readline()
|
|
||||||
if not data:
|
|
||||||
break
|
|
||||||
yield data
|
|
||||||
|
|
||||||
def _multiplexed_buffer_helper(self, response):
|
def _multiplexed_buffer_helper(self, response):
|
||||||
"""A generator of multiplexed data blocks read from a buffered
|
"""A generator of multiplexed data blocks read from a buffered
|
||||||
|
@ -349,6 +340,9 @@ class Client(requests.Session):
|
||||||
else:
|
else:
|
||||||
context = utils.tar(path)
|
context = utils.tar(path)
|
||||||
|
|
||||||
|
if utils.compare_version('1.8', self._version) >= 0:
|
||||||
|
stream = True
|
||||||
|
|
||||||
u = self._url('/build')
|
u = self._url('/build')
|
||||||
params = {
|
params = {
|
||||||
't': tag,
|
't': tag,
|
||||||
|
@ -372,7 +366,7 @@ class Client(requests.Session):
|
||||||
if context is not None:
|
if context is not None:
|
||||||
context.close()
|
context.close()
|
||||||
|
|
||||||
if stream or utils.compare_version('1.8', self._version) >= 0:
|
if stream:
|
||||||
return self._stream_helper(response)
|
return self._stream_helper(response)
|
||||||
else:
|
else:
|
||||||
output = self._result(response)
|
output = self._result(response)
|
||||||
|
|
Loading…
Reference in New Issue