Merge pull request #184 from ibuildthecloud/fix-chunking

Use Requests.iter_lines to fix #176
This commit is contained in:
Maxime Petazzoni 2014-03-19 11:19:29 -07:00
commit 7e105f5727
1 changed files with 6 additions and 12 deletions

View File

@ -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)