小编alP*_*ino的帖子

Elixir任务 - 优雅关闭

我有Elixir Task,需要一些时间(10秒).当应用程序升级时,Task.Supervisor尽管有以下情况,此任务仍被终止shutdown: 30000:

=SUPERVISOR REPORT==== 13-Aug-2015::00:03:09 ===
 Supervisor: {local,tasks_sup}
 Context:    child_terminated
 Reason:     killed
 Offender:   [{pid,<0.304.0>},
              {id,'Elixir.Task.Supervised'},
              {mfargs,{'Elixir.Task.Supervised',start_link,undefined}},
              {restart_type,temporary},
              {shutdown,30000},
              {child_type,worker}]
Run Code Online (Sandbox Code Playgroud)

在应用程序升级时,我不知道如何优雅地停止任务(等到任务完成).这是描述我的问题的代码:

defmodule MyApp do
  use Application

  def start(_, _) do
    MyApp.Supervisor.start_link([])
  end

end

defmodule MyApp.Supervisor do

  use Supervisor

  def start_link(state) do
    Supervisor.start_link(__MODULE__, state, name: __MODULE__)
  end

  def init(state) do
    children = [
      supervisor(Task.Supervisor, [[name: :tasks_sup, shutdown: 30000]]),
      worker(MyApp.Worker, [state], restart: :permanent)
    ]

    supervise(children, strategy: :one_for_one)
  end

end

defmodule MyApp.Worker do

  def start_link(state) do
    GenServer.start_link(__MODULE__, state, [name: …
Run Code Online (Sandbox Code Playgroud)

shutdown task elixir

6
推荐指数
1
解决办法
1096
查看次数

标签 统计

elixir ×1

shutdown ×1

task ×1