'Begin sending the contents of this L{File} (or a subset of the
contents, based on the \'range\' header) to the given request.'

def render_GET(self, request):

    self.restat(False)
    if (self.type is None):
        (self.type, self.encoding) = getTypeAndEncoding(self.basename(), self.contentTypes, self.contentEncodings, self.defaultType)
    if (not self.exists()):
        return self.childNotFound.render(request)
    if self.isdir():
        return self.redirect(request)
    request.setHeader('accept-ranges', 'bytes')
    try:
        fileForReading = self.openForReading()
    except IOError as e:
        if (e.errno == errno.EACCES):
            return self.forbidden.render(request)
        else:
            raise
    if (request.setLastModified(self.getModificationTime()) is http.CACHED):
        fileForReading.close()
        return ''
    if (request.method == 'HEAD'):
        self._setContentHeaders(request)
        fileForReading.close()
        return ''
    producer = self.makeProducer(request, fileForReading)
    producer.start()
    return server.NOT_DONE_YET
