存储GenServer的pid以备将来使用

Zub*_*abi 2 elixir gen-server phoenix-framework

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

Koc*_*ber 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
Run Code Online (Sandbox Code Playgroud)

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