supervisor.ex (949B)
1 # Pleroma: A lightweight social networking server 2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> 3 # SPDX-License-Identifier: AGPL-3.0-only 4 5 defmodule Pleroma.Web.Streamer.Supervisor do 6 use Supervisor 7 8 def start_link(opts) do 9 Supervisor.start_link(__MODULE__, opts, name: __MODULE__) 10 end 11 12 def init(args) do 13 children = [ 14 {Pleroma.Web.Streamer.State, args}, 15 {Pleroma.Web.Streamer.Ping, args}, 16 :poolboy.child_spec(:streamer_worker, poolboy_config()) 17 ] 18 19 opts = [strategy: :one_for_one, name: Pleroma.Web.Streamer.Supervisor] 20 Supervisor.init(children, opts) 21 end 22 23 defp poolboy_config do 24 opts = 25 Pleroma.Config.get(:streamer, 26 workers: 3, 27 overflow_workers: 2 28 ) 29 30 [ 31 {:name, {:local, :streamer_worker}}, 32 {:worker_module, Pleroma.Web.Streamer.Worker}, 33 {:size, opts[:workers]}, 34 {:max_overflow, opts[:overflow_workers]} 35 ] 36 end 37 end