介绍
Erlcron实现类似Linux下面的cron的计划任务。
源码下载地址:https://github.com/erlware/erlcron
原理
Erlcron进程监控树
ecrn_cron_sup |
ecrn_agent |
|
ecrn_sup |
ecrn_reg_server |
|
ecrn_control |
Erlcron利用gen_server的timeout机制实现定时;
添加一项定时任务,会在ecrn_cron_sup下面创建子进程ecrn_agent,并在ecrn_reg_server注册自己;
取消一项定时任务,则在ecrn_reg_server找到进程,然后stop该ecrn_agent。
使用
添加任务
{{once, 3600}, {io, fwrite, ["Hello, world!~n"]}} {{once, {12, 23, 32}}, {io, fwrite, ["Hello, world!~n"]}} {{daily, {3, 30, pm}}, fun() -> io:fwrite("It's three thirty~n") end} {{weekly, thu, {2, am}}, {io, fwrite, ["It's 2 Thursday morning~n"]}}
取消任务
erlcron:cancel(JobRef).