ruby-on-rails - Ruby/Rails 同步作业管理器

标签 ruby-on-rails ruby jobs synchronous task-queue

你好
我将建立一个 rails 网站,在其中进行一些初始用户输入后,将完成一些繁重的计算(通过对 ruby​​ 的 c 扩展,将使用多线程)。由于这些计算将消耗几乎所有的 CPU 时间(也包括内存),因此一次运行的计算不应超过一个。我也不能使用(异步)后台作业(比如延迟作业),因为 rails 必须显示该计算的结果,并且该站点应该在没有 javascript 的情况下工作。
所以我想我需要一个单独的进程,其中所有 Rails 实例都必须将它们的计算请求排队并等待答案(如果队列已满,可能会出现错误消息),一种同步作业管理器。

有谁知道是否有具有这种功能的 gem/插件? (nanite 对我来说似乎很酷,但似乎只是异步的,所以 Rails 实例不知道计算何时完成。对吗?)
另一个想法是使用分布式 ruby​​ (drb) 编写我自己的想法,但如果轮子已经存在,为什么还要再发明轮子呢?

如有任何帮助,我们将不胜感激!

编辑: 由于 zaius 的提示,我认为我可以异步执行此操作,所以我将尝试 resque .

最佳答案

Ruby 有互斥量/信号量。

您可以使用信号量来确保只有一个资源密集型进程在同一时间发生。

但是,在其他任务完成时阻塞前端进程的想法对我来说似乎并不合适。如果我这样做,我会使用后台工作程序,然后使用带有刷新元标记的页面(或 iframe)来持续检查进度。

这样,您可以为启用和禁用 javascript 的客户端使用相同的代码。而且您的 Web 应用程序线程不会阻塞。

关于ruby-on-rails - Ruby/Rails 同步作业管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674151/

相关文章:

ruby-on-rails - ActiveSupport::SecureRandom.hex 问题? Rails 和 ruby

ruby-on-rails - Rails 如何在 textarea 上禁用 tinymce?

mysql - 查询两列匹配字符串的数据

javascript - 解析服务器 XMLHttpRequest 在保存大型数据集时失败

powershell - 使用powershell脚本中的参数在后台启动.exe

ruby-on-rails - 仅在列为真时渲染部分项目

ruby-on-rails - Rspec2 缺少模板错误

ruby-on-rails - 在 rails 3 中处理 HEAD 和 GET 请求时出现问题

ruby-on-rails - ruby /rails : only pass parameter if condition is true

c# - Instagram API 整合