summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsk Solem <ask@celeryproject.org>2013-07-31 15:55:49 +0100
committerAsk Solem <ask@celeryproject.org>2013-07-31 16:07:46 +0100
commit7b88769b5111e8c8d87a7741f0c2e6fb396072d7 (patch)
tree3e4bd0798ecce3efa2052682eaacffced6e6c909
parent71053f44bcdd987c77d158a183d37debeb37118a (diff)
downloadpy-amqp-7b88769b5111e8c8d87a7741f0c2e6fb396072d7.tar.gz
Avoid copy of small messages
-rw-r--r--amqp/method_framing.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/amqp/method_framing.py b/amqp/method_framing.py
index 1e43c8e..a26db66 100644
--- a/amqp/method_framing.py
+++ b/amqp/method_framing.py
@@ -60,12 +60,17 @@ class _PartialMessage(object):
self.complete = (self.body_size == 0)
def add_payload(self, payload):
- self.body_parts.append(payload)
+ parts = self.body_parts
self.body_received += len(payload)
-
if self.body_received == self.body_size:
- self.msg.body = bytes().join(self.body_parts)
+ if parts:
+ parts.append(payload)
+ self.msg.body = bytes().join(parts)
+ else:
+ self.msg.body = payload
self.complete = True
+ else:
+ parts.append(payload)
class MethodReader(object):