0

我有一个网络应用程序,它有一个长时间运行的任务——生成 PDF 报告。生成各种图表,总共需要大约 15 秒的时间来处理。该报告由用户生成。

在请求时处理报告目前会导致流程被占用,更重要的是(鉴于本网站的使用不重)有时请求会超时。

因此,我正在重新设计应用程序这一部分的架构(Rails 2.3.8)。将这一点放在上下文中,每天生成的这些报告不太可能超过几个,这是一个非常小众的应用程序,因此显着的进一步扩展并不是主要问题。我确实打算在未来交出这个项目,所以稳定性是。

我认为最明显的解决方案是使用Spawn生成报告,并在完成后通过电子邮件向用户发送下载链接。我研究过的另一个解决方案是DelayedJob

做过类似事情的任何人都可以推荐一种方法而不是另一种方法吗?

4

1 回答 1

0

delay_job 或其他一些排队机制将是最容易设置的东西。使用delayed_job,您只需将您的工作人员加入队列而不是创建PDF,并且服务器上的后台进程将从队列中进行任何可用的工作。使用 spawn 来分叉你的整个过程似乎有点笨拙,并且似乎不适合其他次要但仍然运行时间更长的任务(如发送电子邮件)。

于 2012-02-19T20:35:58.020 回答