Copy & Paste Engineer

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

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

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

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

環境

サンプル

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

phoenixプロジェクト作成

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

mix phx.new demo --no-ecto

依存関係に追加

mix.exsquantum を追加

  defp deps do
    [
      {:quantum, "~> 3.0"}
    ]
  end

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

mix deps.get

schedulerの作成

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

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

Supervisorへの追加

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

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! と表示されます。

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

確認

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

mix phx.server

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

参考