gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:37 25 4
gpt4 key购买 nike

你好
我将建立一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com