我正在寻找加速动态生成拉链的功能。 我别无选择,因为用户必须根据角色下载不同的文件,并且无法提前准备它们。我发现ProcessPoolExecutor允许我们使用并行任务来加快串行功能。 所以我想知道是否有可能即时创建zip文件。 按照我的实际代码,需要22,4s秒才能生成416,7mo的1900个文件(jpg和pdf)
zipFilename = "%s.zip" % "test"
buffer = BytesIO()
zip = zipfile.ZipFile(buffer, "w", zipfile.ZIP_DEFLATED)
for filepath in filepaths:
absfilepath = os.path.join(settings.MEDIA_ROOT, filepath)
filedir, filename = os.path.split(absfilepath)
zip.write(absfilepath, os.path.join(zipFilename, filename))
zip.close()
response = HttpResponse(buffer.getvalue(), content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=test.zip'
response['Content-Length'] = buffer.tell()
response.status_code = self.responseStatus = status.HTTP_200_OK
buffer.seek(0)
return response