Application
モジュールを使用するアプリケーションがあり、GenServer
インスタンスが実行されています。このGenServer
モジュールにはterminate
コールバックがあります。iex-Sを終了するとコールバックを終了できません。
Ctrl-C a
を使用してiex -S mix
セッションを中止するか、コンソールウィンドウを閉じるだけで(何らかのファイルに書き込む必要があります)、サーバーインスタンス内で何らかのエラーが発生しても強制的にコールバックが正常に機能します。
私はinit()
でこれを入れて試してみた:
Process.flag(:trap_exit, true)
と、メインモジュールにstop/1
を呼び出す:
def stop(state) do
IO.puts "something" #never shown
GenServer.stop(pid) #doesn't seem to work
end
これを参照してください:[GenServerのグレースフルシャットダウン](http://stackoverflow.com/questions/39756769/graceful-shutdown-of-genserver) – Sheharyar