因此,假设我想发送一堆电子邮件,或者每隔4小时重新创建一次站点地图,我在凤凰城怎么做,或者仅仅用药剂呢?
发布于 2015-08-19 14:12:48
有一个简单的替代方案不需要任何外部依赖:
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)发布于 2016-08-04 22:01:00
量子允许您在运行时创建、查找和删除作业。
此外,在创建cronjob时,可以将参数传递给任务函数,如果您对UTC不满意,甚至可以修改时区。
如果您的应用程序作为多个独立实例(例如Heroku)运行,则有由PostgreSQL或Redis支持的作业处理器,它们也支持任务调度:
欧班:https://github.com/sorentwo/oban
Exq:https://github.com/akira/exq
发布于 2015-08-19 04:48:30
为此您可以使用埃尔克龙。你用它就像
job = {{:weekly, :thu, {2, :am}},
{:io, :fwrite, ["It's 2 Thursday morning~n"]}}
:erlcron.cron(job)job是一个二元元组.第一个元素是表示作业计划的元组,第二个元素是函数或MFA()。在上面的例子中,我们每周四凌晨2点运行一次:io.fwrite("It's 2 Thursday morning")。
希望这能帮上忙!
https://stackoverflow.com/questions/32085258
复制相似问题