Я разрабатываю приложение на своем настольном компьютере (Mac OS), для которого я создал несколько задач cron, которые запускаются каждые 5 минут.Код следующий (взято из здесь ):
defmodule MyApp.CronJobs do
use GenServer
@shops ["billa","kaufland","lidl"]
def start_link 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
Enum.each(@shops, &monitor_prices/1)
schedule_work() # Reschedule once more
{:noreply, state}
end
defp monitor_price(shop)
Mix.Task.run "monitor.#{shop}.all_prices"
end
defp schedule_work() do
Process.send_after(self(), :work, 5 * 60 * 1000)
end
end
В дереве Supervision:
...
children = [
supervisor(MyApp.CronJobs, [])
...
]
opts = [ strategy: :one_for_one, name: MyApp.Supervisor]
Supervisor.start_link(children, opts)
Проблема заключается в том, что это работает с сервером, поэтому всякий раз, когдакомпьютер переходит в спящий режим, он перестает работать.
Есть ли способ, чтобы процессы работали в фоновом режиме постоянно, не имея компьютера все время в режиме полной мощности?Более того, есть ли способ запускать смешанные задачи каждые 5 минут без запуска сервера?