是否可以使用 StreamingHttpResponse 生成 PDF,因为对于大型数据集可以使用

您所在的位置:网站首页 can入门书pdf 是否可以使用 StreamingHttpResponse 生成 PDF,因为对于大型数据集可以使用

是否可以使用 StreamingHttpResponse 生成 PDF,因为对于大型数据集可以使用

2023-05-12 03:40| 来源: 网络整理| 查看: 265

将 CSV 视为水果沙拉。你可以在一个大锅里把香蕉切成薄片,加入一些葡萄柚、一些菠萝……然后把整体分成单独的部分,然后放在一起放在桌子上(这是:你生成你的 CSV 文件,然后将它发送到客户端)。但是你也可以直接做单独的部分:在一个小碗里切一些香蕉片,加入一些葡萄柚,一些菠萝,......把这个小碗带到桌子上,然后对其他单独的部分重复这个过程(这是:您生成 CSV 文件并在生成它时将其部分发送给客户端)。

好吧,如果 CSV 是水果沙拉,那么 PDF 就是蛋糕。您必须混合所有成分并将其放入烤箱。这意味着在烘烤整个蛋糕之前,您不能将一块蛋糕带到餐桌上。同样,在完全生成 PDF 文件之前,您无法开始将其发送给客户。

所以,为了回答你的问题,这个 ( response = StreamingHttpResponse((writer.writerow(row) for row in rows), content_type="text/csv")) 不能为 PDF 完成。

但是,一旦生成文件,您就可以使用其他答案中提到的方式将其流式传输到客户端FileResponse。

如果您的问题是生成 PDF 花费的时间太长(例如可能会触发超时错误),请考虑以下几点:

尝试优化生成算法的速度

在客户端请求之前在后台生成文件并将其存储在您的存储系统中。您可能希望使用 cronjob 或celery来触发 PDF 的生成而不阻止 HTTP 请求。

一旦准备好下载,就使用 websockets 将文件发送到客户端(参见django-channels)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3