[解決済み】ElixirまたはPhoenixフレームワークで、数時間ごとに実行するコードをスケジュールするにはどうすればよいですか?
2022-04-06 10:41:15
質問
例えば、4時間ごとに大量のメールを送ったり、サイトマップを再作成したりしたい場合、PhoenixやElixirではどうすればいいのでしょうか?
解決方法は?
外部依存を必要としないシンプルな代替案があります。
defmodule MyApp.Periodically do
use GenServer
def start_link(_opts) do
GenServer.start_link(__MODULE__, %{})
end
def init(state) do
schedule_work() # Schedule work to be performed at some point
{:ok, state}
end
def handle_info(:work, state) do
# Do the work you desire here
schedule_work() # Reschedule once more
{:noreply, state}
end
defp schedule_work() do
Process.send_after(self(), :work, 2 * 60 * 60 * 1000) # In 2 hours
end
end
これで監督ツリーに
children = [
MyApp.Periodically
]
Supervisor.start_link(children, strategy: :one_for_one)
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン