gpt4 book ai didi

ruby - 我如何使用 Celluloid 并行执行我的插件?

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

我的问题应该能帮助我走上正确的道路。

我正在使用并发框架 celluloid 开发一个 ruby​​ 应用程序。这是它的样子:

activity

我有一些插件。我想同时运行它们并等到最后一个完成。我有一个抽象类,叫做PluginFrame,它被所有的插件继承并且还提供了一个run方法。

  1. 我的想法是制作一个 SupervisionGroup ,但这是正确的想法吗?
  2. 如何运行 SupervisionGroup 并等待所有组成员完成?
  3. 创建一个单独的 PluginPool 类来管理插件池是个好主意吗?
  4. 限制 pool 的大小对我来说也很有趣,因此只能同时运行两个或三个插件。我怎样才能做到这一点?

最佳答案

如果您的插件可能崩溃并且您希望 celluloid 重新启动它们,您只需要一个主管。

你想做的可以像使用矿池和 future 一样简单。

要为您的插件创建一个共享池,您需要一个新的 actor。

class PluginRunner
include Celluloid

def run(plugin)
plugin.run
end
end

plugin_runner = PluginRunner.pool(size: 4)

plugins = [LastFmPlugin, TwitterPlugin]
results = plugins.map {|p| plugin_runner.future.run(p) }.map(&:value)
persist_results(results)

关于ruby - 我如何使用 Celluloid 并行执行我的插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598583/

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