【问题标题】:Elixir: Stop an external system process when Application shuts downElixir:当应用程序关闭时停止外部系统进程
【发布时间】:2018-12-17 10:48:17
【问题描述】:

我们有一个依赖于 Tomcat 服务器的 elixir 应用程序。我们当前的策略是在应用程序启动时使用System.cmd 调用启动.war 文件。这可行,但如果应用程序(或更具体地说,运行启动命令的 GenServer)退出,我们还想关闭服务器。如何捕捉 GenServer 的退出并在退出之前运行另一个 System.cmd 调用?

【问题讨论】:

    标签: elixir erlang-supervisor gen-server


    【解决方案1】:

    你需要做的是实现一个terminate/2 回调。

    在这里您甚至可以处理各种类型的终止原因,如:normal:shutdown 或其他自定义原因。您只需要以下内容:

    module MyServer do
      use GenServer
      # ...
      def terminate(reason, state) do
        # System call goes here
        System.cmd "echo", ["I'll be back"]
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 2018-07-17
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多