我需要生成 100 多页的 PDF 文档。该过程需要处理大量数据,并且一次性生成需要更多时间和我可以提供的内存。
我尝试了几种不同的方法来破解我的方式:
结果不同,我让它工作了,但它很慢并且占用的内存比它应该的要多(有时会达到实例软内存限制)。目前,我在不同的任务中生成一些部分,将每个部分存储在 blobstore 中,并将这些部分与 pyPdf 合并,但它会阻塞较大的文档。
我生成的文档并没有那么复杂,主要是表格和文本,没有内部引用,没有 TOC,没有任何应该了解文档其余部分的内容。我可以使用 platypus 进行布局,不需要花哨的文档外观或 HTML2PDF 转换。
目标是在数据存储允许的范围内尽可能快地生成文档。并行页面生成会很好,但不是必需的。
我正在考虑使用blobstore 文件 api逐页生成,其中每个任务将生成一个页面,最后一个任务将完成 blobstore 文件使其可读。但我似乎无法找到如何暂停生成、将部分 PDF 存储到流,然后他们使用该流恢复生成以在不同的任务中生成下一页。
所以我的问题是:
GAE 如何生成大于几页的 PDF 文档,在任务请求之间拆分生成,然后将生成的文档存储在 blobstore 中?
如果reportlab无法进行生成拆分,那么如何最小化合并不同PDF文档的占用空间,使其符合GAE任务请求设置的限制?
更新: 非常感谢转换 API 的替代品。
2nd UPDATE Con version API 正在停用,所以现在不是一个选项。
第三次更新 Pileline 或 MapReduce API 可以在这里提供帮助吗?