From 289e19509438fdddcccdf7b0c6ea0084be152766 Mon Sep 17 00:00:00 2001 From: Dana Powers Date: Thu, 4 Aug 2016 17:35:04 -0700 Subject: Send combined size and payload bytes to socket to avoid potentially split packets with TCP_NODELAY --- kafka/conn.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'kafka/conn.py') diff --git a/kafka/conn.py b/kafka/conn.py index 6c4e476..d6310e6 100644 --- a/kafka/conn.py +++ b/kafka/conn.py @@ -519,17 +519,17 @@ class BrokerConnection(object): client_id=self.config['client_id']) message = b''.join([header.encode(), request.encode()]) size = Int32.encode(len(message)) + data = size + message try: # In the future we might manage an internal write buffer # and send bytes asynchronously. For now, just block # sending each request payload self._sock.setblocking(True) - for data in (size, message): - total_sent = 0 - while total_sent < len(data): - sent_bytes = self._sock.send(data[total_sent:]) - total_sent += sent_bytes - assert total_sent == len(data) + total_sent = 0 + while total_sent < len(data): + sent_bytes = self._sock.send(data[total_sent:]) + total_sent += sent_bytes + assert total_sent == len(data) if self._sensors: self._sensors.bytes_sent.record(total_sent) self._sock.setblocking(False) -- cgit v1.2.1