`Prymn.Agent.Connection` GenServer uses healthchecking with the new streaming RPC, retrieving asynchronously the health status of the agent. The Connection will also shut itself down when there's no usage (when the keepalive function is not called frequently)
39 lines
1.2 KiB
Elixir
39 lines
1.2 KiB
Elixir
defmodule Prymn.Application do
|
|
# See https://hexdocs.pm/elixir/Application.html
|
|
# for more information on OTP Applications
|
|
@moduledoc false
|
|
|
|
use Application
|
|
|
|
@impl true
|
|
def start(_type, _args) do
|
|
children = [
|
|
# Start the Telemetry supervisor
|
|
PrymnWeb.Telemetry,
|
|
# Start the Ecto repository
|
|
Prymn.Repo,
|
|
# Start the PubSub system
|
|
{Phoenix.PubSub, name: Prymn.PubSub},
|
|
# Start Finch
|
|
{Finch, name: Prymn.Finch},
|
|
# Start the Endpoint (http/https)
|
|
PrymnWeb.Endpoint,
|
|
# Start the prymn agent (grpc) registry and the supervisor
|
|
{Registry, keys: :unique, name: Prymn.Agents.Registry},
|
|
{DynamicSupervisor, name: Prymn.Agents.Supervisor, strategy: :one_for_one, max_seconds: 60}
|
|
]
|
|
|
|
# See https://hexdocs.pm/elixir/Supervisor.html
|
|
# for other strategies and supported options
|
|
opts = [strategy: :one_for_one, name: Prymn.Supervisor]
|
|
Supervisor.start_link(children, opts)
|
|
end
|
|
|
|
# Tell Phoenix to update the endpoint configuration
|
|
# whenever the application is updated.
|
|
@impl true
|
|
def config_change(changed, _new, removed) do
|
|
PrymnWeb.Endpoint.config_change(changed, removed)
|
|
:ok
|
|
end
|
|
end
|