我将以子弹形式列出这个场景,希望尽可能简化问题的描述。
我正在努力完成以下任务:
问题:
问题: 解决这个问题的最佳方法是什么?我假设为长时间运行的进程实现进度指示器是一项非常常见的任务,我只是不确定实现它的最佳方法。我有一些想法使用session [:status]并将其范围限定在模型中,但我想听听一些更好的建议。我还担心这些进程中有很多(100个?)运行的可能性,通过会话跟踪他们的进度是一个好主意吗?也许我应该将有问题的代码移出模型,某处“会话”在范围内?
任何想法都会很棒。 Fyi,在前端我只是计划从ajax请求每隔3秒左右轮询'status'对象。因此,将数据保留在数据库中将是一个非常糟糕的主意。
答案 0 :(得分:1)
首先,你应该将长时间工作的流程百分比写入Rails缓存,例如Rail.cache.write("#{record_id}_status", 0.1)
,直到工作完成,执行Rail.cache.write("#{record_id}_status", 1)
,你可以控制你的百分比处理,
然后,在你的节目页面中,你知道了record_id,在Rails服务器Rails.cache.read("#{record_id}_status")
中使用ajax轮询record_id的状态,因此它将知道页面中的百分比