'Computes the etag header to be used for this request.
By default uses a hash of the content written so far.
May be overridden to provide custom etag implementations,
or may return None to disable tornado\'s default etag support.'

def compute_etag(self):

    hasher = hashlib.sha1()
    for part in self._write_buffer:
        hasher.update(part)
    return ('"%s"' % hasher.hexdigest())
