【问题标题】:How should I adjust my application logic for background processing? [closed]我应该如何调整我的应用程序逻辑以进行后台处理? [关闭]
【发布时间】:2013-08-03 01:58:46
【问题描述】:

我有一个网络应用程序,它使用从第三方 API 收集的数据生成报告。我已经让延迟工作在后台处理 API 调用和报告计算。我无法更新我的应用程序流程以适应后台处理。

在我使用后台处理之前...

  1. 用户会点击“新建报告”
  2. 将显示带有activity spinner 的模态视图以响应按钮单击
  3. 应用将处理 API 调用
  4. 完成后,报告将create!redirect_to 报告显示页面

在后台调用 API 时,应用会重定向到空白报告(显然!)。 delay_job 有一个我可能需要使用的success 钩子,但我不确定如何从作业类/模型重定向?

【问题讨论】:

    标签: ruby-on-rails delayed-job


    【解决方案1】:

    您可能会考虑创建一个新模型,例如ReportJob,表示正在进行的报告生成。这将与delayed_job 使用的延迟作业实例一一对应。最基本的ReportJob 需要两个字段:state(例如in_progresscompleted 等)和report_urlreport_url 将是 nil 开始并且当作业处于 in_progress 状态时。一旦作业完成并且ReportJob 移动到completed 状态,它将由延迟的作业填充。

    用于启动作业的浏览器启动的 POST 将返回新创建的 ReportJob 实例的 URL。然后,您的 JavaScript 会在此 URL 上轮询,直到其 state 转换为 completed,此时您会将 window.location.href 等设置为现在有效的 report_url URL 以显示新报告。

    【讨论】:

      猜你喜欢
      • 2014-11-11
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多