有没有人有任何使用虾时在渲染/构建过程之前启动文件流的例子?
情况是我有一个大约 350 页的报告,在我自己的工作站上运行大约需要 60 秒,但是当将其移至生产 (EC2) 时,运行报告的时间增加了 300 多秒,当它完成时不会将 PDF 发送到浏览器。
即使 60 秒是很长的时间,没有任何用户反馈,但即使您等待 300 秒也不起作用。我一直想做的是在渲染过程之前开始文件下载(我正在使用.pdf.prawn 视图和Prawnto),这样至少用户可以在它处理时看到正在发生的事情,但是所以远已经无法做到这一点。我找到的所有示例和指南在渲染完成后开始下载,经过漫长的等待。
如果所有其他方法都失败了,我将考虑安排报告,但理想情况下,用户将能够查看报告,然后返回并进行更改并再次运行它,这显然是不允许的。
用 Prawnto 显示的代码并不多,因为它只是视图中的 PDF 布局,并在控制器中通过 this 调用。我已经尝试过 send_file,并将 PDF 布局移动到控制器以在没有 Prawnto 的情况下运行它,但所有更改似乎都给出了相同的结果 - 在漫长的等待后 PDF 被发送到浏览器。
在这一点上我没有想法,并会感激任何想法!
respond_to do |format|
format.pdf {
prawnto :prawn => {:page_layout => :portrait, :skip_page_creation => true}, :inline => false
render :layout => false
}