【问题标题】:Starting dynamic simple_one_for_one workers after supervisor starts在主管启动后启动动态 simple_one_for_one 工作人员
【发布时间】:2016-08-16 00:07:10
【问题描述】:

我有一个名为Supervisorsimple_one_for_one 工作人员,他们定期为我系统上的每个用户执行一项任务。

我希望应用程序在 Supervisor 第一次启动时为每个用户启动一个工作器,并且我希望应用程序在 Supervisor 在以后重新启动时执行相同的操作,无论出于何种原因。

目前我在Applicationstart(type, args)回调中动态启动所有子进程,但如果Supervisor重新启动,则不会启动所有子进程。

如何确保在Supervisor 启动/重新启动后立即启动所有动态子工作者?

(我的应用在 Elixir 中,但同样的原则也适用于 Erlang。)

【问题讨论】:

    标签: erlang elixir erlang-otp erlang-supervisor


    【解决方案1】:

    我做得很好的一种方法是使用另一个主管和“重新启动工作人员”。你的主管是新主管的孩子——它是重启工作者的兄弟。新主管使用one_for_allrest_for_one,因此如果您的主管死亡,restart worker 重新启动。

    restart worker重启后,就可以启动动态worker了。

    【讨论】:

    • 酷,这正是我想要的 :-)。对我何时想要“rest_for_one”而不是“one_for_all”有任何见解吗?
    猜你喜欢
    • 2014-11-27
    • 1970-01-01
    • 2019-09-29
    • 2014-12-09
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多