我的应用程序基于从外部API收集的数据构建报告,这可能需要几分钟时间。当然,我不想阻止工人流程。是否可以将数据收集发送到后台并允许用户进一步使用应用程序? 此外,最好使用SSE或WebSockets显示作业的状态。
答案 0 :(得分:1)
通常,您会将后台作业发送到 Resque 或其他后台作业队列,并让您的员工从队列中执行作业。
看起来像这样:
class ReportGenerationJob
# ...
def work
# do expensive operations here
end
end
r = Resque.new
r << ReportGenerationJob.new(...) # Not a blocking operation!
一旦完成给定的工作,您的工作人员就可以以某种有用的方式发出信号(例如,通过电子邮件向用户发送作业已完成;将“完成!”值写入您的数据库;等等)。