def get_next_batch(self):
        """
        This method is called from the manager. It must return a list or a generator
        of BaseRecord objects.
        When it has nothing else to read, it must set class variable "finished" to True.
        """
        number_of_items = self.read_option('number_of_items')
        for i in range(0, self.batch_size):
            to_read = self.last_read + 1
            if to_read >= number_of_items:
                self.finished = True
                break
            else:
                item = BaseRecord()
                self.last_read = to_read
                item['key'] = self.last_read
                item['country_code'] = random.choice(self.country_codes)
                item['state'] = random.choice(self.states)
                item['city'] = random.choice(self.cities)
                item['value'] = random.randint(0, 10000)
                self.increase_read()
                self.last_position['last_read'] = self.last_read
                yield item
        self.logger.debug('Done reading batch')
This method is called from the manager. It must return a list or a generator
        of BaseRecord objects.
        When it has nothing else to read, it must set class variable "finished" to True.