HTTP リクエストを 5 秒ごとにポストして、ハートビートをサーバーに報告するプロセスを生成しようとしています。私が持っているコードは次のとおりです。
defmodule MyModule.Heartbeat do
def start_link do
spawn_link(fn ->
:timer.apply_interval(:timer.seconds(5), __MODULE__, :beat, [])
end)
end
defp beat do
HTTPoison.post "https://myserver/heartbeat
end
end
defmodule MyModule.Supervisor do
use Supervisor
def start_link do
Supervisor.start_link(__MODULE__, :ok)
end
def init(:ok) do
children = [
worker(MyModule.Heartbeat, [])
]
supervise(children, strategy: :one_for_one)
end
end
ただし、アプリを起動しようとすると、次のエラーで終了します。
[info] Application my_module exited: MyModule.start(:normal, []) returned an error: shutdown: failed to start child: MyModule.Heartbeat
** (EXIT) #PID<0.535.0>
必要なのは、監視ツリーの一部として実行され、指定された間隔で要求を送信するプロセスだけです。メッセージ自体を受信できる必要はありません。特定の実装についてはあまり気にしません。
このプロセスの開始を妨げているここで私が間違ったことを誰かが提案できますか?これを達成するためのより良い方法があるかもしれませんか?