我有一个生成 HTML、XML 和 CSV 报告的控制器。用于这些报告的查询需要一分钟多的时间才能返回结果。
在后台运行这些任务然后将结果返回给用户的最佳方法是什么?我调查了Backgroundrb。有什么更基本的东西可以满足我的需求吗?
我有一个生成 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)
我们一直在工作中使用它,而且效果很好。