def debug_print(self):

        ring = self._fetch_all()

        print 'Hash ring "{key}" replicas:'.format(key=self.key)

        now = time.time()
        n_replicas = len(ring)
        if ring:
            print '{:10} {:6} {:7} {}'.format('Start', 'Range', 'Delay', 'Node')
        else:
            print '(no replicas)'

        nodes = collections.defaultdict(list)

        for n, (start, replica, heartbeat, expired) in enumerate(ring):
            hostname, pid, rnd = replica.split(':')
            node = ':'.join([hostname, pid])

            abs_size = (ring[(n+1) % n_replicas][0] - ring[n][0]) % RING_SIZE
            size = 100. / RING_SIZE * abs_size
            delay = int(now - heartbeat)

            nodes[node].append((hostname, pid, abs_size, delay, expired))

            print '{start:10} {size:5.2f}% {delay:6}s {replica}{extra}'.format(
                start=start,
                replica=replica,
                delay=delay,
                size=size,
                extra=' (EXPIRED)' if expired else ''
            )

        print
        print 'Hash ring "{key}" nodes:'.format(key=self.key)

        if nodes:
            print '{:8} {:8} {:7} {:20} {:5}'.format('Range', 'Replicas', 'Delay', 'Hostname', 'PID')
        else:
            print '(no nodes)'

        for k, v in nodes.items():
            hostname, pid = v[0][0], v[0][1]
            abs_size = sum(replica[2] for replica in v)
            size = 100. / RING_SIZE * abs_size
            delay = max(replica[3] for replica in v)
            expired = any(replica[4] for replica in v)
            count = len(v)
            print '{size:5.2f}% {count:8} {delay:6}s {hostname:20} {pid:5}{extra}'.format(
                start=start,
                count=count,
                hostname=hostname,
                pid=pid,
                delay=delay,
                size=size,
                extra=' (EXPIRED)' if expired else ''
            )
Prints the ring for debugging purposes.
dataset/ETHPy150Open closeio/redis-hashring/redis_hashring/__init__.py/RingNode.debug_print