code: def _get_segments(self, start, request_size):
      
      if not request_size:
        return []
  
      end = start + request_size
      futures = []
  
      while request_size > self._max_request_size:
        futures.append(self._get_segment(start, self._max_request_size))
        request_size -= self._max_request_size
        start += self._max_request_size
      if start < end:
        futures.append(self._get_segment(start, end - start))
      return [fut.get_result() for fut in futures]
docs: Get segments of the file from Google Storage as a list.
  
      A large request is broken into segments to avoid hitting urlfetch
      response size limit. Each segment is returned from a separate urlfetch.
  
      Args:
        start: start offset to request. Inclusive. Have to be within the
          range of the file.
        request_size: number of bytes to request.
  
      Returns:
        A list of file segments in order