存储GenServer的pid以备将来使用

问题描述 投票:2回答:1

我需要在应用程序启动时启动GenServer,但是它的PID将需要调用并转换Genserver。我将如何在应用程序的其余部分中获取该信息以供将来使用。

elixir phoenix-framework gen-server
1个回答
8
投票

如果GenServer将死亡并且将由主管重新启动它将收到新的pid并且您的“存储”将不再有效 - 您将无法访问您的GenServer。这就是你应该在这里使用名字的原因:

{:ok, _} = GenServer.start_link(MyApp, [:hello], name: :your_genserver_name)

那么call / cast会是这样的:

  def get_state do
    GenServer.call(:your_genserver_name, {:get_state})
  end

有关详细信息,请参阅this部分文档。

© www.soinside.com 2019 - 2024. All rights reserved.