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