【发布时间】:2014-04-08 19:16:17
【问题描述】:
我有一个 rails 4 应用程序,它正在做背景微积分。因此,用户按下一个按钮,它会启动一个长演算的后台作业(使用 delay_job)并到达等待页面。尽管微积分是异步完成的,但我想找到一种方法来警告用户并在微积分完成后自动重新加载页面。
我查看了几种解决方案:
- Faye 或 private_pub => 我不能为这项非常具体的工作使用另一台服务器
- ActionController::Live => 我不知道作业完成后如何触发操作
- 轮询 => 目前最好的解决方案,但我希望找到比轮询更不贪婪的方法
如果您对此问题有任何聪明的解决方案,或者对我在列出的想法中的限制有任何建议。
【问题讨论】:
-
您的选项是轮询(如您所确定的)和 websockets(Faye 使用的)。有一些项目可以将 websocket 服务器注入到您的 Rails 应用程序中。不过,您将需要一个多线程服务器(如 Puma)。
-
如果后台作业不会永远运行,轮询听起来不错。
标签: ruby-on-rails asynchronous ruby-on-rails-4 delayed-job faye