diff options
author | Dana Powers <dana.powers@gmail.com> | 2016-01-24 18:36:46 -0800 |
---|---|---|
committer | Dana Powers <dana.powers@gmail.com> | 2016-01-24 18:36:46 -0800 |
commit | 077dc4742ffa82584946379790424faf4c6ba47f (patch) | |
tree | bd14706a8dfc429f6bf211bac02ad21af967c6ce /kafka/partitioner/default.py | |
parent | 48e96822b3ec4f897438a2d1cdb735f51648cb48 (diff) | |
parent | 85c0dd2579eb6aa0b9492d9082d0f4cf4d8ea39d (diff) | |
download | kafka-python-077dc4742ffa82584946379790424faf4c6ba47f.tar.gz |
Merge pull request #515 from dpkp/kafka_producer
KafkaProducer
Diffstat (limited to 'kafka/partitioner/default.py')
-rw-r--r-- | kafka/partitioner/default.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/kafka/partitioner/default.py b/kafka/partitioner/default.py new file mode 100644 index 0000000..358efeb --- /dev/null +++ b/kafka/partitioner/default.py @@ -0,0 +1,23 @@ +import random + +from .hashed import murmur2 + + +class DefaultPartitioner(object): + """Default partitioner. + + Hashes key to partition using murmur2 hashing (from java client) + If key is None, selects partition randomly from available, + or from all partitions if none are currently available + """ + @classmethod + def __call__(cls, key, all_partitions, available): + if key is None: + if available: + return random.choice(available) + return random.choice(all_partitions) + + idx = murmur2(key) + idx &= 0x7fffffff + idx %= len(all_partitions) + return all_partitions[idx] |