在注册表中注册一个poolboy池

时间:2017-04-25 03:52:18

标签: erlang elixir otp

在启动后,是否可以在注册表(:poolboy:gproc elixir 1.4中)注册Registry池?

我需要在池上的pub / sub架构上实现某种类型。我想在同一个别名下注册多个池。

Registry:duplicate:gproc:p,但看起来它们都不适用于:via元组,所以我无法使用它在我游泳池的name

1 个答案:

答案 0 :(得分:4)

看起来df = pd.DataFrame(dict( A=np.arange(8), B=list('wxyz') * 2 )) dof = dict( w=lambda j: j + 2, x=lambda j: j ** 2 - 1, y=lambda j: math.sin(j), z=lambda j: abs(math.log2(j)) ) df.apply(lambda x: dof[x.B](x.A), 1) 0 2.000000 1 0.000000 2 0.909297 3 1.584963 4 6.000000 5 24.000000 6 -0.279415 7 2.807355 dtype: float64 只允许在给定名称下注册当前进程。

因此,要使用注册表,您需要启动一个流程来充当每个Poolboy池的代理,例如Registry模块GenServer

PoolProxy

注册后,您可以使用

将pub-sub发送到代理进程
defmodule PoolProxy do
  use GenServer

  def init(poolname) do
    {:ok, _} = Registry.register(Registry.PoolPubSub, "PoolPubSub", nil)
    {:ok, poolname}
  end

  def handle_call(:notify_pool, _from, poolname) do
    # interact with poolboy pool here...
  end
end
相关问题