我需要生成 100 多页的 PDF 文档。该过程需要处理大量数据,一次性生成需要更多的时间和内存。
虽然我尝试了几种不同的方法来破解我的方式:
我得到了不同的结果,但它很慢并且占用了比它应该更多的内存(有时会达到实例软内存限制)。目前,我在不同的任务中生成了一些部分,将每个部分存储在 blobstore 中,并将它们与 pyPdf 合并,但它会阻塞较大的文档。
我生成的文档并没有那么复杂,主要是表格和文本,没有内部引用,没有 TOC,没有任何应该注意文档其余部分的内容。我可以忍受鸭嘴兽的布局,我不需要花哨的文档外观或 HTML2PDF 转换。
目标是在数据存储允许的情况下尽可能快地生成文档。并行页面生成会很好,但不是必需的。
我正在考虑使用 blobstore files api 逐页生成,其中每个任务将生成一个页面,最后一个任务将完成 blobstore 文件,使其可读。但我似乎无法找到如何暂停生成、将部分 PDF 存储到流中,然后他们使用该流恢复生成以在不同的任务中生成下一页。
所以我的问题是:
GAE 如何生成超过几页的 PDF 文档,在任务请求之间拆分生成,然后将生成的文档存储在 blobstore 中?
如果 reportlab 无法进行生成拆分,那么如何最大程度地减少合并不同 PDF 文档的占用空间,使其符合 GAE 任务请求设置的限制?
更新: 非常感谢 Conversion API 的替代品。
第二次更新 Conversion API 正在停用,因此现在不是一个选项。
第三次更新 Pileline 或 MapReduce API 可以提供帮助吗?
最佳答案
关于python - 如何在 App Engine 的后台任务中逐页生成 pdf 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267885/