Please check Serving large files ( with high loads ) in Django on sending files to client. Also, you seem to be reading directly from chunk collection by doing a find_one and that is no appropriate way to use files stored on GridFS. Ideally, you would access it using gridfs file io api:
response = HttpResponse(FileWrapper(fs.get_version(filename)), content_type = 'application/zip')
response['Content-Transfer-Encoding'] = 'Binary'
Also you may want to return response directly in the try block if all is successful instead of wrapping again in HttpReponse.