Ruby on rails 处理长时间运行的任务

Ruby on rails 处理长时间运行的任务,ruby-on-rails,delayed-job,spawn,Ruby On Rails,Delayed Job,Spawn,我有一个web应用程序,它有一个长时间运行的任务—生成PDF报告。生成各种图形,总共需要大约15秒来处理。报告由用户生成 目前,在请求时处理报告会导致流程被占用,更重要的是(考虑到该网站的使用并不频繁),有时请求会超时 因此,我正在重新设计应用程序这一部分的体系结构(Rails 2.3.8)。在上下文中,每天生成的报告不太可能超过两个,而且这是一个非常小的应用程序,因此进一步扩展并不重要。不过,我确实打算在将来移交该项目,因此稳定性是至关重要的 我认为最明显的解决方案是生成报告,并在完成后通过电

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

目前,在请求时处理报告会导致流程被占用,更重要的是(考虑到该网站的使用并不频繁),有时请求会超时

因此,我正在重新设计应用程序这一部分的体系结构(Rails 2.3.8)。在上下文中,每天生成的报告不太可能超过两个,而且这是一个非常小的应用程序,因此进一步扩展并不重要。不过,我确实打算在将来移交该项目,因此稳定性是至关重要的

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


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

延迟工作,或者其他一些排队机制将是最容易设置的。使用延迟的_作业,您只需将工作人员排队,而不是创建PDF,服务器上的后台进程将从队列中执行任何可用的工作。使用spawn来完成整个过程似乎有点笨手笨脚,而且似乎不适合其他次要但运行时间更长的任务(如发送电子邮件)

是的,我想我想知道另一个优势是否是目前同步完成的其他任务(如忘记密码的电子邮件),但有时可能需要一段时间,可以使用相同的机制排队。我想缺点是有一个后台进程一直在运行,而不是在需要时分叉进程。反过来说,在什么情况下,有人会建议用Spawn派生一个进程吗?