我有一個application.ex
,看起來像這樣:鳳凰:主管忽略的名字,新工藝
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
而一個requests.ex
,看起來像這樣:
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
當我開始我的應用程序和運行:observer.start
按預期方式,我可以看到帶有:one
鍵的任務,但有兩件事是錯誤的。一,監管方沒有名字,儘管我在指定添加iex -S mix
像這樣一個,兩個,後續處理:
Qtrain.Requests.Document.start_link %{id: :dammit}
不會導致所添加的pid
下過程。
但是,他們在進程選項卡顯示:
有什麼理由我不能名監督員?爲什麼新的流程不會出現在它之下?
那麼我不能要求更徹底的答案。謝謝!我正在從Rails移動一個sidekiq應用程序,並嘗試在OTP運氣。 –
祝你好運!我個人發現它很直接,坦白地說,令人興奮的是,由於許多事情(特別是OTP),它們從紅寶石轉換爲靈藥。 – mudasobwa