在 Elixir 中,依赖应用程序是否受到监督?
In Elixir, are dependent applications supervised?
到目前为止,我知道当我启动我的 Elixir 应用程序时,一堆依赖的应用程序也会启动。
这些依赖应用程序是否以某种方式在我的应用程序监督树中启动?
如果依赖的应用程序崩溃会怎样?重启了吗?
我猜 Elixir 在应用程序方面像 Erlang 一样工作。
- 在Erlang中每个应用程序都有一个独立的监督树
- 如果一个应用程序崩溃了,这意味着最顶层的监督者确实崩溃了,并且所有的重启策略都失败了。 简单地增加一个新的监督层来解决问题的可能性很小。
- 可以使用
application:ensure_all_started(Application[,StartType])
启动所有依赖,StartType可以是
temporary
:(默认值):如果 temporary
应用程序因任何原因停止 ,则不会发生任何事情
permanent
:如果 permanent
应用程序因任何原因停止,则所有其他应用程序终止
transient
:所有其他应用程序终止是 transient
应用程序因任何原因停止但 normal
- 也可以为每个依赖项调用
application:ensure_started(Application[,StartType])
。请注意,在这两种情况下,StartType
仅控制一个应用程序终止对其他应用程序的影响,但没有应用重启策略。
- 使用
application:which_applications()
可以知道哪些应用程序是 运行
在 Erlang VM 中,所有应用程序都作为子应用程序启动 application_master。
每个应用程序都有 StartType
,可以是 temporary
、transient
和 permanent
.
之一
permanent
,在某些情况下 transient
应用程序崩溃将影响整个 Erlang VM(VM 将崩溃并创建 crash.dump 文件)。
根据 Elixir application module 你可以在 start/2
.
中设置你的依赖类型
到目前为止,我知道当我启动我的 Elixir 应用程序时,一堆依赖的应用程序也会启动。
这些依赖应用程序是否以某种方式在我的应用程序监督树中启动?
如果依赖的应用程序崩溃会怎样?重启了吗?
我猜 Elixir 在应用程序方面像 Erlang 一样工作。
- 在Erlang中每个应用程序都有一个独立的监督树
- 如果一个应用程序崩溃了,这意味着最顶层的监督者确实崩溃了,并且所有的重启策略都失败了。 简单地增加一个新的监督层来解决问题的可能性很小。
- 可以使用
application:ensure_all_started(Application[,StartType])
启动所有依赖,StartType可以是temporary
:(默认值):如果temporary
应用程序因任何原因停止 ,则不会发生任何事情
permanent
:如果permanent
应用程序因任何原因停止,则所有其他应用程序终止transient
:所有其他应用程序终止是transient
应用程序因任何原因停止但normal
- 也可以为每个依赖项调用
application:ensure_started(Application[,StartType])
。请注意,在这两种情况下,StartType
仅控制一个应用程序终止对其他应用程序的影响,但没有应用重启策略。 - 使用
application:which_applications()
可以知道哪些应用程序是 运行
在 Erlang VM 中,所有应用程序都作为子应用程序启动 application_master。
每个应用程序都有 StartType
,可以是 temporary
、transient
和 permanent
.
之一
permanent
,在某些情况下 transient
应用程序崩溃将影响整个 Erlang VM(VM 将崩溃并创建 crash.dump 文件)。
根据 Elixir application module 你可以在 start/2
.