【发布时间】:2017-11-18 05:48:27
【问题描述】:
我正在尝试将多个 HTML 页面提供给单个页面,然后将最后的单个页面作为 PDF 提供。我总共有 95 页,我已经使用以下堆栈实现了这一点;
- Python/烧瓶
- WeasyPrint HTML to PDF Creator
-
Jinja 模板使用 include
{% include 'page1.html' %} {% include 'page2.html' %} ... ... {% include 'page95.html' %} Heroku 部署
- gunicorn 和 nginx 在生产中与 Flask 一起使用
我的问题是,最终页面需要超过 80 秒才能显示为 PDF(即:包含 95 个其他 html 页面的最终 html 页面)。而 Heroku 只能维持 28-30 秒的连接。有什么方法可以加快提供最终 PDF 的过程?
多线程会对此有所帮助吗? (我可能需要阅读如何做到这一点 - 不是专家)我已经在我的应用程序中有这个
app.run(threaded=True)
抱歉,如果我在这里使用了任何不清楚的术语。
【问题讨论】:
-
总是一样吗?缓存结果并提供服务。或者更好的是,只做一次,而不是使用动态加载,而是将其放在静态路径中。
-
不幸的是,每个页面都有一个动态的图像内容......所以它并不总是相同的:(
-
是否有理由生成每个页面,将它们编译成一个页面,然后将其转换为 PDF?您不允许直接生成pdf吗?我刚刚测试了使用
reportlab直接生成PDF,它的速度要快一个数量级。 -
Reportlab PLUS 具有将 html 转换为 pdf 的功能...我将不得不将所有内容重新编写为 reportlab 格式...但这可能是唯一的方法
标签: python heroku flask jinja2 weasyprint