我有一个生成HTML,XML和CSV报告的控制器。用于这些报告的查询需要一分钟才能返回结果。
在后台运行这些任务然后将结果返回给用户的最佳方法是什么?我已经研究过Backgroundrb。我的需求有什么更基础的吗?
答案 0 :(得分:5)
您可以查看使用DelayedJob为您执行这些查询,还有一个名为“NotificationQueue”的附加表。作业完成后(使用其结果集),将结果集和进行该查询的人员的用户ID存储在NotificationQueue表中。然后在每个页面加载(如果你愿意,每15-20秒),轮询该数据库并查看是否有任何已完成的查询。
DelayedJob非常棒,因为您编写的代码好像不是将是一个延迟的作业,只需更改代码即可执行以下操作:
#Your method
Query.do_something(params)
#Change to
Query.send_later(:do_something, params)
我们在工作中一直使用它,效果很好。