'Stream the data between first_byte and last_byte (included)'

def stream_data_in_range(self, first_byte, last_byte):

    self._stream.seek(first_byte)
    position = first_byte
    while True:
        if (last_byte < ((position + STREAM_DATA_CHUNK_SIZE) - 1)):
            chunk = self._stream.read(((last_byte - position) + 1))
            (yield chunk)
            break
        chunk = self._stream.read(STREAM_DATA_CHUNK_SIZE)
        position += STREAM_DATA_CHUNK_SIZE
        (yield chunk)
