JavaScriptを有効にしてください

【Elixir】Phoenix で Quantum を使用してプログラム定期実行する方法

 ·  ☕ 1 分で読めます

【Elixir】Phoenix で Quantum を使用してプログラム定期実行する方法

Elixir Phoenix 環境で Quantum を使用してプログラム定期実行する方法

Quantum のドキュメントはこちら

環境

  • Elixir 1.14.2
  • Phoenix 1.6.3
  • Quantum 3.5.0

サンプル

GitHub を見つつ進めていきます。

phoenixプロジェクト作成

DB不要のため --no-ecto を付けます。

mix phx.new demo --no-ecto

依存関係に追加

mix.exsquantum を追加

1
2
3
4
5
  defp deps do
    [
      {:quantum, "~> 3.0"}
    ]
  end

追加した quantum を取得させる。

mix deps.get

schedulerの作成

スケジューラーを作成します。

1
2
3
defmodule Demo.Scheduler do
  use Quantum, otp_app: :demo
end

Supervisorへの追加

Supervisorscheduler を追加致します。
7行目のように childrenDemo.Scheduler を追加します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
defmodule Acme.Application do
  use Application

  def start(_type, _args) do
    children = [
      # This is the new line
      Demo.Scheduler
    ]

    opts = [strategy: :one_for_one, name: Demo.Supervisor]
    Supervisor.start_link(children, opts)
  end
end

ジョブ設定

config.exs にジョブを設定します。
以下のようにすると毎分 Hello QUANTUM! と表示されます。

1
2
3
4
config :demo, Demo.Scheduler,
  jobs: [
    {"* * * * *", fn -> IO.puts("Hello QUANTUM!") end}
  ]

確認

Phoenixサーバーを起動します。

mix phx.server

起動後にコンソールに Hello QUANTUM! と毎分出てくれば成功です。

参考

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer