Ruby on rails RubyonRails中的非阻塞I/O
我的应用程序基于从外部API收集的数据构建报告,这可能需要几分钟的时间。当然,我不想阻止worker进程。是否可以将数据收集发送到后台,并允许用户进一步使用应用程序?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
此外,使用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的东西信誉扫地吗?有很多不同的方法可以做到这一点,这在很大程度上取决于你所使用的平台类型和你的其他要求。以下是一篇可能有用的文章: