首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >渲染前在Rails中流式处理来自Prawn/Prawnto的输出

渲染前在Rails中流式处理来自Prawn/Prawnto的输出
EN

Stack Overflow用户
提问于 2011-03-23 19:25:48
回答 1查看 1.4K关注 0票数 0

有没有人在使用Prawn时在渲染/构建过程之前启动文件流的例子?

情况是,我有一个大约350页的报告,在我自己的工作站上运行大约需要60秒,但当它移动到生产(EC2)时,运行报告的时间超过300秒,并且当它完成时,它不会将PDF发送到浏览器。

即使是60秒也是一个很长的时间,没有任何用户反馈,但是300秒就不能工作,即使你等待。我一直在寻找的是在渲染过程之前开始下载文件(我使用了一个.pdf.prawn视图),这样至少用户可以在处理过程中看到正在发生的事情,但到目前为止还无法做到这一点。我找到的所有示例和指南都是在渲染完成之后,在漫长的等待之后开始下载的。

如果所有其他方法都失败了,我将考虑计划报告,但理想情况下,用户可以查看报告,然后返回并进行更改并再次运行它,这显然不允许计划。

用Prawnto显示的代码并不多,因为它只是视图中的PDF布局,并在控制器中通过这个调用。我已经尝试了send_file,并将PDF布局移动到控制器以运行它,但所有的更改似乎都给出了相同的结果-在漫长的等待之后,PDF被发送到浏览器。

我在这一点上没有想法,并感谢任何想法!

代码语言:javascript
复制
 respond_to do |format|
  format.pdf {
    prawnto :prawn => {:page_layout => :portrait, :skip_page_creation => true}, :inline => false
    render :layout => false
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-23 20:38:52

如果生成PDF的时间大于60秒,您应该考虑将其卸载给后台工作人员。建议使用Delayed::Job或Resque。

让工作人员创建PDF并将其保存到磁盘;抛出一个标记(例如,在数据库中或其他地方),以指示PDF已准备好下载。

这会给你的应用程序增加一些额外的复杂性,但用户体验会大大增强,而且你不会出现你所说的“无法下载PDF”的问题。此外,如果您的应用程序使用率很高,您可以更轻松地将创建PDF的工作者卸载到不同的服务器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5404521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档