python - 如何在 App Engine 的后台任务中逐页生成 pdf 文档

标签 python google-app-engine reportlab

我需要生成 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/

相关文章:

python - 哈里斯角检测器在不同的旋转

api - 在本地(开发)安装中使用 GAE 远程 api

reportlab - 阿拉伯文本在reportlab python中显示为黑色方 block

python - Reportlab 和 Fontawesome 字体

python - 在模板中包含 View

python - 使用 OpenCV python 和多线程运行两个视频

python - App Engine - 在运行时指定实体名称

php - 如何在 Google App Engine 中包含 PHP 的 MSSQL 驱动程序

python - 将 bool 值转换为自定义字符串

python - 从html中提取数组元素