diff options
Diffstat (limited to 'kafka/partitioner/roundrobin.py')
-rw-r--r-- | kafka/partitioner/roundrobin.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/kafka/partitioner/roundrobin.py b/kafka/partitioner/roundrobin.py new file mode 100644 index 0000000..54d00da --- /dev/null +++ b/kafka/partitioner/roundrobin.py @@ -0,0 +1,23 @@ +from itertools import cycle + +from .base import Partitioner + +class RoundRobinPartitioner(Partitioner): + """ + Implements a round robin partitioner which sends data to partitions + in a round robin fashion + """ + def __init__(self, partitions): + super(RoundRobinPartitioner, self).__init__(partitions) + self.iterpart = cycle(partitions) + + def _set_partitions(self, partitions): + self.partitions = partitions + self.iterpart = cycle(partitions) + + def partition(self, key, partitions): + # Refresh the partition list if necessary + if self.partitions != partitions: + self._set_partitions(partitions) + + return next(self.iterpart) |