From 2b88e9cddb8a9236e4aa363c649a03f97f209085 Mon Sep 17 00:00:00 2001 From: Pavel Sviderski Date: Wed, 7 Dec 2016 18:12:12 +0800 Subject: [PATCH] increase logs performance, do not copy bytes object Signed-off-by: Pavel Sviderski --- docker/api/client.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docker/api/client.py b/docker/api/client.py index a9fe7d08..7fd080d3 100644 --- a/docker/api/client.py +++ b/docker/api/client.py @@ -305,11 +305,13 @@ class APIClient( """A generator of multiplexed data blocks read from a buffered response.""" buf = self._result(response, binary=True) + buf_length = len(buf) walker = 0 while True: - if len(buf[walker:]) < 8: + if buf_length - walker < STREAM_HEADER_SIZE_BYTES: break - _, length = struct.unpack_from('>BxxxL', buf[walker:]) + header = buf[walker:walker + STREAM_HEADER_SIZE_BYTES] + _, length = struct.unpack_from('>BxxxL', header) start = walker + STREAM_HEADER_SIZE_BYTES end = start + length walker = end