Django Python ProcessPoolExecutor即时运行

时间:2018-10-30 06:57:05

标签: django python-2.7 process zip bytesio

我正在寻找加速动态生成拉链的功能。 我别无选择,因为用户必须根据角色下载不同的文件,并且无法提前准备它们。我发现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 

0 个答案:

没有答案