code: def rotate_slaves(self):
          "Round-robin slave balancer"
          slaves = self.sentinel_manager.discover_slaves(self.service_name)
          if slaves:
              if self.slave_rr_counter is None:
                  self.slave_rr_counter = random.randint(0, len(slaves) - 1)
              for _ in xrange(len(slaves)):
                  self.slave_rr_counter = (
                      self.slave_rr_counter + 1) % len(slaves)
                  slave = slaves[self.slave_rr_counter]
                  yield slave
          # Fallback to the master connection
          try:
              yield self.get_master_address()
          except MasterNotFoundError:
              pass
          raise SlaveNotFoundError('No slave found for %r' % (self.service_name)f rotate_slaves(self):
          "Round-robin slave balancer"
          slaves = self.sentinel_manager.discover_slaves(self.service_name)
          if slaves:
              if self.slave_rr_counter is None:
                  self.slave_rr_counter = random.randint(0, len(slaves) - 1)
              for _ in xrange(len(slaves)):
                  self.slave_rr_counter = (
                      self.slave_rr_counter + 1) % len(slaves)
                  slave = slaves[self.slave_rr_counter]
                  yield slave
          # Fallback to the master connection
          try:
              yield self.get_master_address()
          except MasterNotFoundError:
              pass
          raise SlaveNotFoundError('No slave found for %r' % (self.service_name))
docs: Round-robin slave balancer