Merge remote-tracking branch 'origin/develop' into global-status-expiration
[akkoma] / lib / pleroma / web / streamer / supervisor.ex
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