def __init__(self, zk_hosts, group_name, consumer_name, allocator_fn, on_rebalance=None): self.zk_hosts = zk_hosts self.group_name = group_name self.consumer_name = consumer_name self.allocator_fn = allocator_fn self.on_rebalance = on_rebalance self.conn = client.KazooClient(hosts=",".join(self.zk_hosts)) self.connected = threading.Event() self.members = set() self.members_collected = threading.Event() self.party = Party(self.conn, self.consumer_name, self.members_path, on_change=self.on_group_members_change) self.partitions = set() self.partitions_collected = threading.Event() self.shared_set = SharedSet(self.conn, self.partition_path, on_change=self.on_partition_change) self.mapping = {}