summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Powers <dana.powers@gmail.com>2016-07-10 07:24:38 -0700
committerDana Powers <dana.powers@gmail.com>2016-07-17 09:07:13 -0700
commit060e8782d5ddf6e0709e829327a2dc3cc1fe3a97 (patch)
treeb87c2e375be3852846971da6eb0fb548a1104ea4
parentdd50847a9beaa9490ae35c7b1bc18d0780b92726 (diff)
downloadkafka-python-060e8782d5ddf6e0709e829327a2dc3cc1fe3a97.tar.gz
Simplify RecordMetadata to unaltered namedtuple -- minor speed optimization
-rw-r--r--kafka/producer/future.py26
1 files changed, 7 insertions, 19 deletions
diff --git a/kafka/producer/future.py b/kafka/producer/future.py
index 27cf33b..041e3a2 100644
--- a/kafka/producer/future.py
+++ b/kafka/producer/future.py
@@ -38,12 +38,14 @@ class FutureRecordMetadata(Future):
produce_future.add_errback(self.failure)
def _produce_success(self, offset_and_timestamp):
- base_offset, timestamp_ms = offset_and_timestamp
+ offset, timestamp_ms = offset_and_timestamp
if timestamp_ms is None:
timestamp_ms = self.timestamp_ms
- self.success(RecordMetadata(self._produce_future.topic_partition,
- base_offset, timestamp_ms,
- self.relative_offset))
+ if offset != -1 and self.relative_offset is not None:
+ offset += self.relative_offset
+ tp = self._produce_future.topic_partition
+ metadata = RecordMetadata(tp[0], tp[1], tp, offset, timestamp_ms)
+ self.success(metadata)
def get(self, timeout=None):
if not self.is_done and not self._produce_future.wait(timeout):
@@ -55,18 +57,4 @@ class FutureRecordMetadata(Future):
return self.value
-class RecordMetadata(collections.namedtuple(
- 'RecordMetadata', 'topic partition topic_partition offset timestamp')):
- def __new__(cls, tp, base_offset, timestamp, relative_offset=None):
- offset = base_offset
- if relative_offset is not None and base_offset != -1:
- offset += relative_offset
- return super(RecordMetadata, cls).__new__(cls, tp.topic, tp.partition,
- tp, offset, timestamp)
-
- def __str__(self):
- return 'RecordMetadata(topic=%s, partition=%s, offset=%s)' % (
- self.topic, self.partition, self.offset)
-
- def __repr__(self):
- return str(self)
+RecordMetadata = collections.namedtuple('RecordMetadata', 'topic partition topic_partition offset timestamp')