diff options
author | Mark Roberts <wizzat@gmail.com> | 2015-02-02 10:16:33 -0800 |
---|---|---|
committer | Mark Roberts <wizzat@gmail.com> | 2015-02-02 10:16:33 -0800 |
commit | f0f37445b483b413cfe1ec900d033a3c9325e6e9 (patch) | |
tree | 8834fbd48e7cacaf2601d5a813517472d1a275b5 | |
parent | 4379355450bcaf47ec9ce821e2d9a09e07f77bbe (diff) | |
parent | 72bec18adde851510c1c627ce8dee659425f727b (diff) | |
download | kafka-python-f0f37445b483b413cfe1ec900d033a3c9325e6e9.tar.gz |
Merge pull request #306 from sontek/catch_topic_not_bytes
Alert if the topic is not sent as bytes
-rw-r--r-- | kafka/producer/simple.py | 8 | ||||
-rw-r--r-- | test/test_producer.py | 15 |
2 files changed, 22 insertions, 1 deletions
diff --git a/kafka/producer/simple.py b/kafka/producer/simple.py index afeae06..2699cf2 100644 --- a/kafka/producer/simple.py +++ b/kafka/producer/simple.py @@ -2,6 +2,7 @@ from __future__ import absolute_import import logging import random +import six from itertools import cycle @@ -68,8 +69,13 @@ class SimpleProducer(Producer): return next(self.partition_cycles[topic]) def send_messages(self, topic, *msg): + if not isinstance(topic, six.binary_type): + topic = topic.encode('utf-8') + partition = self._next_partition(topic) - return super(SimpleProducer, self).send_messages(topic, partition, *msg) + return super(SimpleProducer, self).send_messages( + topic, partition, *msg + ) def __repr__(self): return '<SimpleProducer batch=%s>' % self.async diff --git a/test/test_producer.py b/test/test_producer.py index caf8fe3..f6b3d6a 100644 --- a/test/test_producer.py +++ b/test/test_producer.py @@ -7,6 +7,7 @@ from . import unittest from kafka.producer.base import Producer + class TestKafkaProducer(unittest.TestCase): def test_producer_message_types(self): @@ -25,3 +26,17 @@ class TestKafkaProducer(unittest.TestCase): # This should not raise an exception producer.send_messages(topic, partition, m) + def test_topic_message_types(self): + from kafka.producer.simple import SimpleProducer + + client = MagicMock() + + def partitions(topic): + return [0, 1] + + client.get_partition_ids_for_topic = partitions + + producer = SimpleProducer(client, random_start=False) + topic = b"test-topic" + producer.send_messages(topic, b'hi') + assert client.send_produce_request.called |