Ruby on rails RubyonRails中的非阻塞I/O

Ruby on rails RubyonRails中的非阻塞I/O,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我的应用程序基于从外部API收集的数据构建报告,这可能需要几分钟的时间。当然,我不想阻止worker进程。是否可以将数据收集发送到后台,并允许用户进一步使用应用程序? 此外,使用SSE或WebSocket显示作业状态也很好。通常,您会将后台作业分派到或其他后台作业队列,并让您的工作人员从队列中执行作业 看起来是这样的: class ReportGenerationJob # ... def work # do expensive operations here end en

我的应用程序基于从外部API收集的数据构建报告,这可能需要几分钟的时间。当然,我不想阻止worker进程。是否可以将数据收集发送到后台,并允许用户进一步使用应用程序?
此外,使用SSE或WebSocket显示作业状态也很好。

通常,您会将后台作业分派到或其他后台作业队列,并让您的工作人员从队列中执行作业

看起来是这样的:

class ReportGenerationJob
  # ...

  def work
    # do expensive operations here
  end
end

r = Resque.new
r << ReportGenerationJob.new(...)   # Not a blocking operation!
类报告生成作业
# ...
def工作
#在这里做昂贵的手术
结束
结束
r=Resque.new

r但如何在作业完成时发送WebSocket或SSE?是否有某种“承诺”或可用的东西?我的意思是,我不应该等待它完成,这会让while resque的东西信誉扫地吗?有很多不同的方法可以做到这一点,这在很大程度上取决于你所使用的平台类型和你的其他要求。以下是一篇可能有用的文章: