【发布时间】:2017-10-29 03:13:07
【问题描述】:
到目前为止,我知道当我启动我的 Elixir 应用程序时,一堆依赖的应用程序也会启动。
这些依赖应用程序是否以某种方式在我的应用监督树中启动?
如果依赖的应用程序崩溃了怎么办?重启了吗?
【问题讨论】:
标签: erlang elixir erlang-otp erlang-supervisor
到目前为止,我知道当我启动我的 Elixir 应用程序时,一堆依赖的应用程序也会启动。
这些依赖应用程序是否以某种方式在我的应用监督树中启动?
如果依赖的应用程序崩溃了怎么办?重启了吗?
【问题讨论】:
标签: erlang elixir erlang-otp erlang-supervisor
我猜 Elixir 像 Erlang 一样工作。
application:ensure_all_started(Application[,StartType]) 启动所有依赖项,StartType 可以是
temporary :(默认值):如果 temporary 应用程序因任何原因停止,则不会发生任何事情permanent :如果 permanent 应用程序因任何原因停止,所有其他应用程序都会终止transient :所有其他应用程序终止是 transient 应用程序因任何原因停止,但 normal
application:ensure_started(Application[,StartType])。请注意,在这两种情况下,StartType 仅控制一个应用程序终止对其他应用程序的影响,但没有应用重启策略。application:which_applications()可以知道哪些应用程序正在运行
【讨论】:
prod时,mix默认启动所有应用程序为:permanent。这由:start_permanent 项目选项控制,默认为Mix.env == :prod。任何人都可以确认是这种情况吗?另外,如何通过mix来配置每个应用程序StartType?
在 Erlang VM 中,所有应用程序都作为子应用程序主应用程序启动。
每个应用程序都有StartType,它可以是temporary、transient 和permanent 之一。permanent 和在某些情况下 transient 应用程序崩溃将影响整个 Erlang VM(VM 将崩溃并创建 crash.dump 文件)。
根据Elixir application module,你可以在start/2中设置你的依赖类型。
【讨论】: