ich eine application.ex
haben, die wie folgt aussieht:Phoenix: Betreuer ignoriert Name, neue Prozesse
defmodule Qtrain.Application do
use Application
def start(_type, _args) do
import Supervisor.Spec
children = [
supervisor(QtrainWeb.Endpoint, [], name: Qtrain.Supervisor),
supervisor(Qtrain.Requests, [], name: Qtrain.Requests)
]
Supervisor.start_link(children, strategy: :one_for_one)
end
def config_change(changed, _new, removed) do
QtrainWeb.Endpoint.config_change(changed, removed)
:ok
end
end
Und ein requests.ex
die wie folgt aussieht:
defmodule Qtrain.Requests do
use GenServer
alias Qtrain.Requests.Document
def start_link do
GenServer.start_link(__MODULE__, %{})
end
def init(state) do
schedule_work()
{:ok, state}
end
def handle_info(:work, state) do
Document.start_link %{id: :one}
schedule_work()
{:noreply, state}
end
defp schedule_work() do
Process.send_after(self(), :work, 1 * 1000)
end
end
Wenn ich meine app starten und run :observer.start
Ich kann die Aufgabe mit einem :one
Schlüssel wie erwartet sehen, aber es gibt zwei Dinge falsch. Einer, der Mutter Supervisor hat keinen Namen trotz mir eine Angabe und zwei nachfolgende in iex -S mix
schöpfenden Prozesse wie folgt:
Qtrain.Requests.Document.start_link %{id: :dammit}
ergeben keine Prozesse unter dem pid
hinzugefügt werden.
Aber, sie in der Registerkarte Prozesse angezeigt:
Gibt es Gründe, warum ich nicht, dass die Betreuer benennen kann? Und warum erscheinen neue Prozesse nicht darunter?
Nun, ich hätte nicht eine gründlichere Antwort verlangen können. Vielen Dank! Ich ziehe eine Sidekiq-App von Rails und versuche mein Glück bei OTP. –
Viel Glück dann! Ich persönlich fand es sehr unkompliziert und, ehrlich gesagt, aufregend, aufgrund vieler Dinge von Rubin zu Elixier zu wechseln (speziell OTP). – mudasobwa